VBAを使った月別フォルダ管理を自動化できる
以下、全て自動化する関数を紹介
- 指定フォルダ内に以下のフォルダがあるか確認
① 年(もしくは年度)フォルダ
② ①フォルダ内に月フォルダ - 作成されていなければフォルダを自動生成する
- 年と年度の対応可能
関数の戻り値は作成した月のフォルダパス
このまま保存プログラムにつなげることが可能
保存先まで考えることで真の効率化、自動化が完成する。
こんにちは、hokkyokunです。
事務作業上、月別にフォルダを生成して管理しなければいけないこと、
あると思います
ただ、日本の会社って状況によって年度(4月~翌年3月)と年(1月~12月)の対応もしなきゃいけないからややこしいですよね…
フォルダ管理はめんどくさくてついつい後回しになってしまいますので
さくっと関数で自動生成処理完成しちゃいましょう
関数
フォルダのイメージ図
Function create_YearMonth_Dir(ByVal file_Dir As String, ByVal date_ As Date, ByVal fiscalYear As Boolean)
'年(もしくは年度)、月を取得
Dim Year_str, Month_str As String
'fiscalYear=True→年度
If fiscalYear Then
'月が1~3月→ 年-1=年度
If Month(date_) <= 3 Then
Year_str = Year(date_) - 1 & "年度"
'月が4月~ → 年=年度
Else
Year_str = Year(date_) & "年度"
End If
'fiscalYear=False→年
Else
Year_str = Year(date_) & "年"
End If
'月はいつでもそのまま
Month_str = Month(date_) & "月"
'フォルダ作成
Dim create_Dir As String
Dim FSO As Object
Set FSO = CreateObject("Scripting.FilesystemObject")
'年(もしくは年度)のフォルダがあるかどうか
create_Dir = file_Dir & "\" & Year_str
If Dir(create_Dir, vbDirectory) = "" Then
FSO.CreateFolder (create_Dir)
End If
'月フォルダがあるかどうか
create_Dir = create_Dir & "\" & Month_str
If Dir(create_Dir, vbDirectory) = "" Then
FSO.CreateFolder (create_Dir)
End If
create_YearMonth_Dir = create_Dir
End Function
実際に使ってみます。
Sub test_create()
Dim file_Dir, result As String
Dim date_ As Date
Dim fiscalYear As Boolean
'日付はDate型で指定。当日の日付で常に運用するなら「Date」関数を使うと良い。
date_ = #3/1/2023#
'フォルダを作成する場所を指定する
file_Dir = ThisWorkbook.Path & "\test"
'年度か年かどちらでフォルダを作るか指定 True=年度、False=年
fiscalYear = True
result = create_YearMonth_Dir(file_Dir, date_, fiscalYear)
Debug.Print result
'>> thisworbook.path以降は → ..\test\2022年度\3月
End Sub
プログラム実行前
引数 file_Dirで「test」をフォルダを指定しましたが、
プログラム実行前は何もフォルダはありません。
プログラム実行後
プログラム実行後は
2022年度フォルダが作成されています。
fiscalYear=Trueにしたので年度扱いです。
2023年3月は「2022年度3月」ですね!
「2022年度」フォルダ内に3月フォルダが作成されています。
ちなみに
引数fiscalYear=Falseにすると
2023年フォルダが作成されます。中に3月フォルダが作成されます。
データ管理を自動化しよう
この関数の目的は
データ管理を自動化させることです。
例えば、複数のブックに散らばっているデータを集計するマクロを作ったとして、
そのファイルを手動で保存しているのであれば、真の効率化とは言えません。
フォルダの位置を思い出したり、
毎月フォルダを作成したりと意外と手間と労力がかかります。
このプログラムを使うことで
フォルダを自動生成し、さらに戻り値としてフォルダパスを取得できるので
そのままファイルの保存コードを差し込むと集計から保存まで真の自動化が完了します。
良ければ使ってみて下さい。
VBAの学習方法をまとめました。
VBAを高コスパで、短期間で学ぶにはUdemyがおすすめです。
Udemyは良質の学習プラットフォームですが、
動画数が多すぎてどれを見ればよいか迷います。
おすすめの講師をまとめました。
ブログ村ランキング参加中です。よかったらフォローお願いします!!