VBA

【ExcelVBA】Windowsのフォルダを一括作成するマクロ

ねぇもりさん、エクセルシートのリストからWindowsのフォルダを作る方法ないかな?
手作業でポチポチ作るのめんどうだよ
もり
もり
それならVBAでツールを作っちゃおう!

この記事では2点を紹介します。

  1. Excelシートに用意した「フォルダパス」「フォルダ名」のリストから、Windowsのフォルダを一括作成するマクロの作り方
  2. 作成したマクロを、ボタンのワンクリックで実行する方法

 

vbamkdir1

 

もり
もり
完成版をご覧あれ!フォルダ100個くらいなら一瞬で作れちゃうよ~

画面左側がExcelツール・右側がフォルダです。空のフォルダに、フォルダ1~100が一瞬で作成されるのが確認できます。

エクセルシートにパスとフォルダ名を入力

シートのA列・B列にこのように準備します。

  • A2セル → 作成フォルダの上位パスを入力※末尾に円マーク(\)は不要
  • B列 → 作成したいフォルダ名を2行目以降に入力
vbamkdir2

フォルダ一括作成のソースコード

下記のコードを標準モジュールに貼り付けて使用してください。

【ポイント1】B列の最終行まで処理を繰り返す

B列の2行目以降に入力されている分、フォルダを作成します(理論上、Excel最終行まで作成可能?)

B2セルから下方向にセルを検索し、データが存在する最終行まで処理を繰り返します。

【ポイント2】Dir関数で同じ名前のフォルダをチェック

Windowsでフォルダを作る時、同じ名前のフォルダが既に存在する場合、確認メッセージが現れます。

vbamkdir7

マクロ実行が中断されてしまうので、それを回避するために、Dir関数を使用して同名フォルダの存在有無をチェックし、同名フォルダが存在しない場合のみ、作成します。

Dir(フォルダパス, 属性)

  • フォルダパス:作成予定のフォルダのフルパスを指定
  • 属性:「フォルダ」を意味するvbDirectoryを指定

第1引数に指定したフォルダパスが見つからない場合、Dir関数は空文字が戻ります。

たとえば、

Dir(“C:\フォルダ一括作成\フォルダ1“, vbDirectory)と指定すると、フォルダ1が存在しない場合、空文字が返ります。

If文を使用して、空文字が返ってきた場合のみ、フォルダを作成します。

フォームコントロールで実行ボタンを作る

ねぇ、エディタを開かずに、ボタンをクリックするだけでフォルダが作れたらもっと便利だね
もり
もり
フォームコントロールでボタンを作ってみよう!

開発タブ→挿入→ボタン(フォームコントロール)を選択

vbamkdir3

 

エクセルシート上の適当なところで「マウスクリック→ドラッグアンドドロップ」でボタンを作成、マクロを登録します。

vbamkdir4

 

ボタンに付けるテキストは変更可能です。

vbamkdir5

 

こんな風にボタンを用意しておくと、VBAの操作がわからない人でも使えるので便利ですね!

vbamkdir6

 

もり
もり
プログラミングを使わずにサクッと作れちゃう方法もあるんだよ
こっちも見てみてね~
【Windows】Excelのリストから複数フォルダを一括作成する(プログラミング不要)Windowsのフォルダを一括作成する方法を紹介しています。 フリーソフト不要・プログラミング不要!Excelとコマンドプロンプトを使用します。...