Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


11730 / 13646 ツリー ←次へ | 前へ→

【14395】自動フォルダーの作成 YN61 04/5/28(金) 8:01 質問[未読]
【14400】Re:自動フォルダーの作成 Asaki 04/5/28(金) 9:14 回答[未読]
【14417】Re:自動フォルダーの作成 Kein 04/5/28(金) 15:07 回答[未読]
【14443】Re:自動フォルダーの作成 YN61 04/5/29(土) 8:47 お礼[未読]
【14453】Re:自動フォルダーの作成 Kein 04/5/29(土) 17:18 回答[未読]
【14456】Re:自動フォルダーの作成 YN61 04/5/29(土) 21:42 お礼[未読]
【14457】Re:自動フォルダーの作成 YN61 04/5/29(土) 22:14 質問[未読]
【14458】Re:自動フォルダーの作成 Kein 04/5/30(日) 0:51 発言[未読]
【14461】Re:自動フォルダーの作成 YN61 04/5/30(日) 7:30 お礼[未読]
【14465】Re:自動フォルダーの作成 YN61 04/5/30(日) 11:51 質問[未読]
【14476】Re:自動フォルダーの作成 Kein 04/5/30(日) 16:29 発言[未読]
【14477】Re:自動フォルダーの作成 Kein 04/5/30(日) 16:32 発言[未読]
【14487】Re:自動フォルダーの作成 YN61 04/5/30(日) 17:40 お礼[未読]

【14395】自動フォルダーの作成
質問  YN61  - 04/5/28(金) 8:01 -

引用なし
パスワード
   月が変わると、自動的に翌月のフォルダー例えば「7月集計」という名前のフォルダーを発生・作成するようなことが出来ますでしょうか。
現在は、一ケ月の単位が21日から20日で、毎月、月が変わると翌月のフォルダーを作成しています。日々の集計は、マクロを使い、集計(会計ソフトからエクセルで集計しています)したブックに名前をつけて該当月のフォルダーに格納しています。
(該当月のフォルダー作成を忘れますと、VBAの集計がエラーになります。)
月が変わる時は、出社した日にちですので、1日であったり、5月ですと6日などいつも一定していません。何か良いがありましたらご教示ください。

【14400】Re:自動フォルダーの作成
回答  Asaki  - 04/5/28(金) 9:14 -

引用なし
パスワード
   こんにちは。

自動、の意味が良くわかりませんが、
Dir() を使って、当月のフォルダの存在チェックをして、なければ作成
というプログラムを入れておけばよいのでは?

【14417】Re:自動フォルダーの作成
回答  Kein  - 04/5/28(金) 15:07 -

引用なし
パスワード
   こんな感じかな ?

Sub Make_ThisMonth_Folder()
  Dim CkM As Integer
  Const PFol As String = "C:\My Documents\"
 
  If Day(Date) > 20 Then
   CkM = Month(DateAdd("m", 1, Date))
  Else
   CkM = Month(Date)
  End If
  If Dir(PFol & CkM & "月集計", 16) = "" Then
   MkDir PFol & CkM & "月集計"
  Else
   MsgBox "既に当月のフォルダーが存在します", 64
  End If
End Sub

【14443】Re:自動フォルダーの作成
お礼  YN61  - 04/5/29(土) 8:47 -

引用なし
パスワード
   ▼Kein さん:

早速ご返事ありがとうございます。
コードを使わせていただきました。
シンプルなコードですばらしいですね。これからの仕事に生かせます。
更に、欲深いのですが、PCA(会計ソフト)からエクセルにデータを毎日集計させている中に、この貴殿のコードを追加するのですが、月のはじめに(月が変わってパソコンを使ったときエクセルを操作したときに、自動的に貴方の作成していただいたコードを(つまりパソコンの時計と連動させ)働かすということは出来ないでしょうか。
文章が上手く表現できず、Asaki様からも指摘を受けていますが・・・

小生の次の欲とご理解いただければ幸いです。
ありがとうございました。またよろしくご指導のほどお願いします。

【14453】Re:自動フォルダーの作成
回答  Kein  - 04/5/29(土) 17:18 -

引用なし
パスワード
   自動的にということなら、何らかのイベントマクロにしてしまえば
良いでしょう。処理内容から考えると、ブックオープンイベントが適当かと
思われますので、タイトルを Sub Auto_Open() と変更して下さい。
あと「作成済みの場合にメッセージが出る」コードだと、開くたびにメッセージが
出てきてウザイので

  If Dir(PFol & CkM & "月集計", 16) = "" Then
   MkDir PFol & CkM & "月集計"
   MsgBox "当月のフォルダーを作成しました !", 64     
  End If
End Sub

というように変更しておくと、良いと思います。

【14456】Re:自動フォルダーの作成
お礼  YN61  - 04/5/29(土) 21:42 -

引用なし
パスワード
   ▼Kein さん:

大変貴重な指導ありがとうございました。
欲を出して聞かせていただいて、更に大きな収穫を得ました。
このコードを何とかいま集計しているマクロに活用させていただきます。
これは、単独でマクロコードを作成しておくだけで、働きますね。
本当にありがとうございました。

これからもよろしくご指導の程お願いします。

【14457】Re:自動フォルダーの作成
質問  YN61  - 04/5/29(土) 22:14 -

引用なし
パスワード
   ▼Kein さん:

もう少し教えてください。
下のコードは最初にいただいたコードです。
Elseの後のCkm=month(Date)は具体的にはどのような意味なんでしょうか。
コメントいただけませんでしょうか。
(小生の理解ですが、20日以上の日の時は翌月の、さもなければ今月?と
理解したのですが・・・ちょっとおかしいですね。)
それから9行目のDir関数の前にMkDirと書かれていますが、このMkは何を
意味するのでしょうか。

イベントマクロは順調に動いています。ありがとうございました。


>Sub Make_ThisMonth_Folder()
>  Dim CkM As Integer
>  Const PFol As String = "C:\My Documents\"
> 
>  If Day(Date) > 20 Then
>   CkM = Month(DateAdd("m", 1, Date))
>  Else
>   CkM = Month(Date)
>  End If
>  If Dir(PFol & CkM & "月集計", 16) = "" Then
>   MkDir PFol & CkM & "月集計"
>  Else
>   MsgBox "既に当月のフォルダーが存在します", 64
>  End If
>End Sub

【14458】Re:自動フォルダーの作成
発言  Kein  - 04/5/30(日) 0:51 -

引用なし
パスワード
   >20日以上の日の時は翌月の、さもなければ今月?と
>理解したのですが・・・ちょっとおかしいですね。
おかしくないです。そのとおりのコマンドです。前月21日〜今月20日までを当月
と考えるなら、それで良いのかと思いますが・・。
>Dir関数の前にMkDirと書かれていますが、このMkは何を意味するのでしょうか。
Dir関数ではありません。それは "MkDir ステートメント" という独立した語句です。
フォルダーを作成する為のステートメントです。
逆に削除するなら "RmDir ステートメント" を使います。ヘルプで調べて下さい。
なお余計なことかも知れませんが、1年分のフォルダーをまとめて作ったところで
たかだか12個ですから、それで良ければそうしたらどうでしょーか ?

Dim i As Integer
Const Fol As String = "C:\My Documents\"
For i = 1 To 12
  MkDir Fol & i & "月集計"
Next i

というコードを、一回実行するだけで済みますが・・。

【14461】Re:自動フォルダーの作成
お礼  YN61  - 04/5/30(日) 7:30 -

引用なし
パスワード
   Kein さん:

お忙しい中、色々とありがとうございました。
新しいことをたくさん学べました。
ご指導、ご指摘感謝しています。

今後ともよろしくお願いします。

【14465】Re:自動フォルダーの作成
質問  YN61  - 04/5/30(日) 11:51 -

引用なし
パスワード
   ▼Kein さん:

ご指摘のように1年分のフォルダーを作るのもご指導の通りでやってみましたが、
「Fol」が選択「定数式が不足です」と表示されます。
これはどのような意味なんでしょうか。是非教えてください。

>1年分のフォルダーをまとめて作ったところで
>たかだか12個ですから、それで良ければそうしたらどうでしょーか ?
>
>Dim i As Integer
>Const Fol As String = "C:\My Documents\"
>For i = 1 To 12
>  MkDir Fol & i & "月集計"
>Next i
>
>というコードを、一回実行するだけで済みますが・・。

【14476】Re:自動フォルダーの作成
発言  Kein  - 04/5/30(日) 16:29 -

引用なし
パスワード
   >「Fol」が選択「定数式が不足です」と表示
Const Fol As String = "C:\My Documents\" という定数が、宣言されてますか ?
もしされていたら、そんなエラーが出るのは不可解ですね・・。
ま、定数は省いて、直接

Dim i As Integer

For i = 1 To 12
  MkDir "C:\My Documents\" & i & "月集計"
Next i

としてもオッケーですが。

【14477】Re:自動フォルダーの作成
発言  Kein  - 04/5/30(日) 16:32 -

引用なし
パスワード
   老婆心ながら「既に同じ名前のフォルダーが存在」していたら、当然エラーに
なるので注意して下さい。

【14487】Re:自動フォルダーの作成
お礼  YN61  - 04/5/30(日) 17:40 -

引用なし
パスワード
   Kein さん

何かとご指導ありがとうございました。
無事、フォルダーの作成の方法、フォルダー12ケ月分の作成や、20日を過ぎた時点で自動的に新規該当月のフォルダーを作成するなど
色々な観点から、ご指導ありがとうございました。
早速明日、会社でのMOにコードを作成して、使いやすいマクロに仕上げたく思っています。たくさん学べました、またよろしくお願いします。失礼します。

11730 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free