Excel VBAを使用してファイルを保存する際、指定したフォルダが存在しない場合は新しいフォルダを作成したいことがあります。今回は、フォルダの存在を確認し、存在しない場合は自動的に新規フォルダを作成するVBAコードを紹介します。
コードの概要
以下のコードは、指定したパスにフォルダが存在するかどうかを確認し、存在しない場合は新しくフォルダを作成する手順を示しています。
Sub CreateFolderIfNotExists()
Dim SaveFolderPath As String
Dim FolderName As String
' 保存したいフォルダの一つ上の階層のフォルダパスを設定
SaveFolderPath = "C:\Users\YourUsername\Documents" ' 例としてドキュメントフォルダのパスを使用
' 新規フォルダ名を設定
FolderName = "NewFolderName" ' 作成したいフォルダ名を指定
' フォルダの存在を確認し、存在しない場合は作成
If Dir(SaveFolderPath & "\" & FolderName, vbDirectory) = "" Then
MkDir (SaveFolderPath & "\" & FolderName)
MsgBox "フォルダ " & FolderName & " を作成しました。", vbInformation
Else
MsgBox "フォルダ " & FolderName & " は既に存在します。", vbExclamation
End If
End Sub
コードの詳細解説
1. フォルダパスとフォルダ名の設定
SaveFolderPath = "C:\Users\YourUsername\Documents"
FolderName = "NewFolderName"
SaveFolderPath
: 保存したいフォルダの1つ上の階層のパスを指定します。例えば、C:\Users\YourUsername\Documents
のように設定します。FolderName
: 作成したいフォルダの名前を指定します。ここでは"NewFolderName"
というフォルダ名を例として使用しています。
2. フォルダの存在チェック
If Dir(SaveFolderPath & "\" & FolderName, vbDirectory) = "" Then
MkDir (SaveFolderPath & "\" & FolderName)
MsgBox "フォルダ " & FolderName & " を作成しました。", vbInformation
Else
MsgBox "フォルダ " & FolderName & " は既に存在します。", vbExclamation
End If
Dir
関数を使用して、指定されたパスにフォルダが存在するかを確認します。vbDirectory
を指定することで、ディレクトリ(フォルダ)の存在を確認します。- フォルダが存在しない場合は
MkDir
関数を使って新しいフォルダを作成します。作成後、確認のメッセージボックスを表示します。 - 既にフォルダが存在する場合は、メッセージボックスでその旨を通知します。
実用例
例えば、月次レポートを保存するために、毎月新しいフォルダを自動的に作成したい場合、このマクロを利用することで、存在しないフォルダを自動で作成し、ファイルを整理することができます。
Sub SaveMonthlyReport()
Dim SaveFolderPath As String
Dim FolderName As String
SaveFolderPath = "C:\Reports\Monthly"
FolderName = Format(Date, "YYYY_MM") ' 例:2024_08
If Dir(SaveFolderPath & "\" & FolderName, vbDirectory) = "" Then
MkDir (SaveFolderPath & "\" & FolderName)
MsgBox "フォルダ " & FolderName & " を作成しました。", vbInformation
Else
MsgBox "フォルダ " & FolderName & " は既に存在します。", vbExclamation
End If
' ここにファイル保存の処理を追加
End Sub
まとめ
このVBAコードを使用することで、指定したフォルダが存在しない場合に自動的に新しいフォルダを作成し、必要なデータを整理することが可能です。特に、定期的に生成されるレポートやデータの保存先を管理する際に便利です。プロジェクトで活用してみてください。
フォルダの新規作成って意外と面倒くさいよねー
ではまたー
コメント