VBAでフォルダを作成する方法についてご説明します。
VBAからExcelやTxt形式のファイルを出力する際に、任意のフォルダを設定しておくことによりファイルの管理がしやすくなります。
それでは、具体的な手順について確認していきましょう。

新規フォルダの作成

フォルダを作成する場合はmkDir関数を使用します。
<コード>

MkDir "C:\VBA_Sample\AAA"   '作成したいフォルダのパスを設定'

<実行例>

VBAで作成したパスに新しいフォルダが作成されました。

既に存在しているフォルダか確認

ところで、上記のコードを2回以上実行しようとするとエラーが発生します。
これは同じ場所に同名のフォルダを複数作成できないことによるものです。
というわけで新規のフォルダを作成する場合は前もって同名のフォルダが存在しているか調べる必要があります。
フォルダの存在を調べる場合はDir関数を使用します。
Dir関数の引数にパスを指定し、戻り値が””(長さ0の文字列)であればフォルダが存在しないということになります。
また、フォルダについて調べるので2番目の引数にはvbDirctoryを使用しましょう。
<コード>

    Dim FolderName As String    '作成したいフォルダパスを格納'
    FolderName = "C:\VBA_Sample\AAA"
    If Dir(FolderName, vbDirectory) = "" Then   '同名のフォルダがない場合フォルダを作成'
        MkDir FolderName
    Else
        MsgBox "すでに同名のフォルダが存在しています。"
    End If

<実行例>

FileSystemObjectを使用する方法

フォルダを作成する場合はFileSystemObjectを使用する方法もあります。
<コード>
Dim myFO As Object ‘オブジェクト型の変数を定義’
Dim FolderName As String ‘作成したいフォルダパスを格納’
Set myFO = CreateObject(“Scripting.FileSystemObject”) ‘オブジェクト型の変数にFileSystemObjectを設定’
FolderName = “C:\VBA_Sample\ABC”
myFO.CreateFolder FolderName ‘フォルダ作成’
Set myFO = Nothing ‘オブジェクトの解放’
<実行例>

先ほどのコードと同様に新しいフォルダを作成することができました。
既に存在しているフォルダか確認(FileSystemObjectの場合)
FileSystemObjectでフォルダを作成する場合も、すでに同名のフォルダが存在しているか確認する必要があります。
もちろん上のコードと同様にDir関数で確認することができますが、今回はFileSystemObjectのメソッドである
FolderExistsでチェックしてみましょう。
<コード>
Dim myFO As Object ‘オブジェクト型の変数を定義’
Dim FolderName As String ‘作成したいフォルダパスを格納’
Set myFO = CreateObject(“Scripting.FileSystemObject”) ‘オブジェクト型の変数にFileSystemObjectを設定’
FolderName = “C:\VBA_Sample\ABC”
‘フォルダの存在確認’
If myFO.FolderExists(FolderName) Then
MsgBox “すでに同名のフォルダが存在しています。”
Else
myFO.CreateFolder FolderName ‘フォルダ作成’
End If
Set myFO = Nothing ‘オブジェクトの解放’
<実行例>

まとめ

VBAでフォルダを作成する場合はDirを使用する方法とFileSystemObjectを使用する方法の2種類があります。
いずれも既に存在しているフォルダと同名のパスを指定するとエラーになるので、あらかじめパスの確認をしておくようにしましょう。