【Excel VBA】フォルダを作成する方法!複数フォルダも一括作成!

VBAでフォルダを一括作成したいときはないでしょうか。

けど、そんな中で悩むことは、

・VBAでフォルダを一括作成したいが方法がよくわからない
・VBAで複数のフォルダを一括作成したいが方法がよくわからない

ですよね。

今回はそんなお悩みを解決する

・VBAでフォルダを一括作成する方法
・VBAでExcelのリストから複数のフォルダを一括作成する方法

についてまとめます!

VBAでフォルダを一括作成するイメージ

VBAでフォルダを一括作成するイメージについて説明をします。

まず1シート目のA1セルにフォルダ名、E1セルにフォルダ作成先のパスを入力します。

VBAを実行すると、

指定パスにフォルダが作成されます。

さらに複数のファイル名を入力して実行すると、

そのリスト分のフォルダが作成されます!

フォルダを大量に作らなければならない場合に便利ですね!

それでは早速試してみましょう。

VBAでフォルダを一括作成する方法

VBAでフォルダを一括作成するについて説明をします。

サンプルのシートとフォルダを準備する

まずは対象となるシートを準備しましょう。
サンプルでは以下のように1シート目のA2セルにフォルダ名、E1セルにフォルダ作成先のパスを入力します。

続いてフォルダ作成先のフォルダを作成します。
サンプルでは「F:\フォルダ作成テスト」としています。

VBAコード

サンプルのVBAコードは以下の通りです。

Sub フォルダを指定パスへ作成()
    Dim objWB As ThisWorkbook
    Dim objSheet As Object
    Dim i As Long
    Dim strPass As String
    Dim strFolderPass As String

    'Excelのブックとワークシートのオブジェクトを設定します。
    Set objWB = ThisWorkbook
     '1シート目のシートを対象にします。
    Set objSheet = objWB.Sheets(1)

    With objSheet

        'フォルダ作成先のパスを取得し、変数へ代入します。
        strPass = .Range("E1").Value

        'A2セルから最終行まで処理を繰り返します。
        For i = 2 To .Cells(1, 1).End(xlDown).Row

            'フォルダ名の値がある場合のみ処理をします。
            If .Cells(i, 1) <> "" Then
                strFolderPass = strPass & "\" & .Cells(i, 1).Value
                'フォルダがない場合のみフォルダ作成します。
                If Dir(strFolderPass, vbDirectory) = "" Then
                    'フォルダを作成します。
                    MkDir strFolderPass
                End If

             End If
        Next i
        
        MsgBox "フォルダの作成が完了しました!"
    End With
    
    'オブジェクトを解放します。
    Set objWB = Nothing
    Set objSheet = Nothing
    
 End Sub

VBAを設定する

1シート目のシートを対象にします。2シート名にする場合は2を、シート名を指定したい場合は”<シート名>”を入力してください。

Set objSheet = objWB.Sheets(1)

フォルダ作成先のパスを指定します。

strPass = .Range("E1").Value

A2セルから最終行まで処理を繰り返します。A列以外をキーにする場合はCellsの列番号を変えてください。

For i = 2 To .Cells(1, 1).End(xlDown).Row

VBAの実装

VBAの実装方法については
VBAの実装手順
をご参照ください。

VBAを実行する

VBAを実行してみましょう。

フォルダが作成されましたね!

複数のフォルダを一括作成する

続いて、複数のフォルダを一括作成してみましょう。

サンプルでは1シート目のA3以降にフォルダ名を追記しています。

VBAを実行してみましょう。

リスト分、複数のフォルダが作成されましたね!

VBAの説明

VBAについて説明をします。

Excelのブックとワークシートのオブジェクトを設定します。

Set objWB = ThisWorkbook

1シート目のシートを対象にします。

Set objSheet = objWB.Sheets(1)

フォルダ作成先のパスを取得し、変数へ代入します。

strPass = .Range("E1").Value

A2セルから最終行まで処理を繰り返します。

For i = 2 To .Cells(1, 1).End(xlDown).Row

フォルダ名の値がある場合のみ処理をします。

If .Cells(i, 1) <> "" Then

フォルダ名を結合しパスを作成します。

strFolderPass = strPass & "\" & .Cells(i, 1).Value

フォルダがない場合のみフォルダ作成します。

If Dir(strFolderPass, vbDirectory) = "" Then

フォルダを作成します。

MkDir strFolderPass

オブジェクトを解放します。

Set objWB = Nothing Set objSheet = Nothing

VBAの実装手順

実装手順は以下の通りです。

Excel側にVBAを実装していきます。

①Excelを新規に開き、「開発」タブをクリックし、「VisualBasic」をクリックします。
もしくはショートカットキー「Alt」+「F11」でもOKです。

②標準モジュールを追加します。
左ペインのVBAProjectを右クリックし、「挿入」、「標準モジュール」を選択します。

③右ペインのウインドウに上記のVBAを入力します。

こちらで完了です。

VBAを実行する

では早速VBAの実行をしてみましょう。

①「開発」タブの「VBA」をクリックし実行したいマクロを選択し、「実行」をクリックします。

②処理がされたことが確認できれば完了です。

さいごに

いかがでしょうか。

今回は、

・VBAでフォルダを一括作成する方法
・VBAでExcelのリストから複数のフォルダを一括作成する方法

についてまとめました。

また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。



この記事の関連キーワード

こちらの記事の関連キーワード一覧です。クリックするとキーワードに関連する記事一覧が閲覧できます。








コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です