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でExcelのリストから複数のフォルダを一括作成する方法
についてまとめました。
また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。
コメントを残す