
おーい和休!ちょっと頼みがある。

ここに日付ごとのフォルダを作っておいてくれ。

わかりました。

えーと、今日から1年先の分まで作って。

・・・(-“-)まじでかー
ということで、日付を名前としたフォルダを365個作ることになりました。
こういう処理をしてくれるフリーソフトはあると思いますが、職場のセキュリティポリシーの関係で、勝手にインストールできないことが多いですよね。
かといって、チマチマとフォルダを作ってリネームしていくなんて、日の暮れそうな作業量ですねぇ。
1回きりの作業であれば、手分けしてゴリゴリとやってしまう選択肢もあるでしょうが、こんな作業は繰り返し発生するものです。
ここは、パソコンの作業は、パソコンに任せてしまいましょう。
AccessでもExcelでもいいんですが、VBAを組んで片づけるよ!
まず、作業用のフォルダを出力する場所を決めましょう。
どこでもいいのですが、今日はDドライブにあるTESTフォルダ内を出力先にします。
Dドライブがないパソコンをお使いの場合は、環境に合わせて出力先を変更してください。
使用される際は、そちらの環境で十分テストのうえ使用してください。
Sub waq_mkfld1()
'今日から1年後までの日付を付けたフォルダを作成します。
Dim TgTfldPath As String '出力先のパス
Dim TgTfldName As String 'フォルダの名前
Dim ymd_FR As Date '開始年月日
Dim ymd_TO As Date '終了年月日
TgTfldPath = "D:\TEST"
'DドライブにTESTフォルダがあるかどうかをチェック
'TESTフォルダがあればフォルダへのパスが返ってくる→次の処理へ進む
' "" が返ってくれば、TESTフォルダは存在しない→DドライブにTESTフォルダを作成する。
If Dir(TgTfldPath, vbDirectory) = "" Then
'同名のフォルダが存在しないとき
MkDir (TgTfldPath) 'フォルダを作成します。
End If
'出力先をDドライブにあるTESTフォルダ内のoutputフォルダとする
TgTfldName = "output" '変数にフォルダ名をセット
TgTfldPath = "D:\TEST" & "\" & TgTfldName '変数に出力先をセット
'出力先に同名のフォルダがあるかどうかをチェック
'同名のフォルダがあればフォルダへのパスが返ってくる→出力できないため処理中止とする。
' "" が返ってくれば、同名のフォルダは存在しない→出力可能であるため、DドライブにあるTESTフォルダ内にoutputフォルダを作成する。
If Dir(TgTfldPath, vbDirectory) = "" Then
'同名のフォルダが存在しないとき
MkDir (TgTfldPath) 'フォルダを作成します。
Else
'同名のフォルダが存在するとき
MsgBox "出力先に同名のフォルダがあります。処理を中止します。", vbCritical
Exit Sub 'コードの実行を中止します。
End If
'DドライブにあるTESTフォルダ内のoutputフォルダへ連番のフォルダを作成します。
'開始年月日に今日の日付をセットします。
ymd_FR = Date
'終了年月日に1年後の日付をセットします。
ymd_TO = DateAdd("m", 12, Date)
Do
MkDir (TgTfldPath & "" & Format(ymd_FR, "yyyymmdd")) 'フォルダを作成します
'TgTfldPathには出力先(DドライブにあるTESTフォルダ内のoutputフォルダ)が代入されています。
'さらに & を用いてフォルダ名を連結します。
'Format(ymd_FR, "yyyymmdd")) により、20170428 という西暦8ケタの表示に変換します。
ymd_FR = ymd_FR + 1 '1日加算します
Loop Until ymd_FR = ymd_TO ' 変数 ymd_FRと変数 ymd_TO の値が同じになるまで処理をループさせます。
End Sub
以上のコードを標準モジュールに記述し、実行してみてください。
DドライブのTESTフォルダを開けてみましょう。
ハイ!フォルダが365個できあがってますね!成功です。(^^)v
その2に続きます

VBA を使ってフォルダをいっぱい作ろう その2
その1からの続きできましたヨ!お!おおきにやで。ちょっとみせて。・・・う~ん。やっぱり年ごとにまとめてもらうとありがたいな。どうせ直すなら、5年先まで作ってくれへんかな。悪いけど、夜露死苦!・・・(°□°;)まじでかーということで、出力する...



コメントをどうぞ!