【VBA】フォルダ作成を一括で処理する方法!初心者でもできる効率化テクニック

 

100個のフォルダを一つ一つ新規作成する。。。100個のフォルダ名を一つ一つコピペしてリスト化する。。。

手作業だとて時間ばかりかかって疲れ果ててしまいますよね。

 

こんな作業は

『フォルダ作成を一括処理するVBA』で自動化

することができます。

 

『フォルダ作成を一括処理するVBA』を使えば、

1000個のフォルダでも一瞬で作成可能

です。

 

この記事では、フォルダ作成に使われるMkDirの基本から階層フォルダの応用まで、コピペで使えるコードを解説します。

手間と時間のかかるファルダ作成業務を自動化させちゃいましょう。

 

 

広告

フォルダ作成を一括処理する基本コード

『フォルダ作成を一括処理するVBA』の基本的な仕組みは、

MkDirステートメントを使ってフォルダを作成し、Excelのセルからフォルダ名を読み取り、For文で繰り返し処理を行う

という内容です。

 

この方法を覚えれば、100個でも1000個でもフォルダを一瞬で作成できるようになります。

まずは基本的な3つの要素から理解していきましょう。

 

MkDirステートメントの基本構文

MkDirステートメントは新しいフォルダを作成するVBAの命令文です。

Windowsのファイルシステムにフォルダを直接作成する仕組みで処理速度が速い

という特徴があります。

基本的な書き方がこちら

MkDir "C:\新しいフォルダ"

 

MkDirの後にフォルダのパスを指定するだけ

 

デスクトップに「テストフォルダ」を作るコードがこちら

 

MkDir "C:\Users\ユーザー名\Desktop\テストフォルダ"

 

以上がMkDirの基本的な使い方なのでしっかりと覚えておいてください。

 

セルのリストからフォルダ名を取得する方法

Excelのセルからフォルダ名を取得することで、動的にフォルダを作成できるようになります。

 

この方法の特徴は、

フォルダ名をExcel上で簡単に編集できるため、VBAコードを修正せず目的のフォルダを作成できること

です。

 

リストからフォルダ作成を一括処理するVBAのサンプルコードがこちら

Sub フォルダ作成()
Dim FP As String
FP = "C:\Users\takub\OneDrive\デスクトップ"
gyo = Cells(Rows.Count, 1).End(xlUp).Row
For i = 4 To gyo
MkDir FP & "\" & Cells(i, 1).Value & Cells(i, 2).Value
Next
End Sub

 

上記のコードは

デスクトップにA列+B列のファイル名でフォルダを作成する

という内容です。

 

実行結果がこちら

 

リスト内容と同じ名前でフォルダを作成することができました。

 

関連記事「ファイル情報を取得するマクロ」では、『リストからフォルダ作成を一括処理するVBA』が設定されたエクセルファイルをダウンロードすることができます。

 

 

For文を使った繰り返し処理の書き方

For~Next文は、

指定する回数分処理を繰り返す

ことができます。

 

基本的な書き方は For i = 1 To 10 のように、開始値から終了値まで変数iを1つずつ増やしながら処理を繰り返します。

For i = 1 To 10
MkDir "C:\MyFolder\" & Cells(i, 1).Value
Next i

 

上記のコードは

A列のテキスト内容を取得し10個のフォルダを作成する

という内容です。

 

For~Nextを自由に扱うことができれば、大量のフォルダ作成も一瞬で処理できるようになります。

 

関連記事「For~Nextの使い方」では、エクセル業務でよく使われる『繰り返し処理VBA』の作り方が紹介されています。

 

階層フォルダの一括作成する応用テクニック

階層フォルダの作成は、より実践的なファイル管理を可能にする高度なテクニックです。

親フォルダの下に子フォルダを自動で作成することで、組織的なファイル構造を効率的に構築できます。

 

階層を区別するVBAを扱うことができれば、プロジェクト管理や部署別のファイル整理など、複雑な業務要件にも対応可能できるようになります。

 

ここからは、

階層構造の理解とエラー対処法、そしてExcelでの管理方法の3つのポイント

ご紹介します。

 

深い階層フォルダを作成するコード

深い階層フォルダを作成するには、パスを適切に連結して段階的に作成する必要があります。

これは、

一度に深い階層を作成しようとするとエラーが発生する可能性があるため

です。

 

エラーの発生を完全に防ぐ方法は、

フォルダのパスを完全に指定すること

です。

 

こんな感じ

MkDir "C:\親フォルダ\子フォルダ\孫フォルダ"

 

たとえば、年度別にプロジェクトフォルダを作成する場合のサンプルコードがこちら

MkDir "C:\Projects\2024\営業部\第1四半期"
MkDir "C:\Projects\2024\営業部\第2四半期"
MkDir "C:\Projects\2024\営業部\第3四半期"
MkDir "C:\Projects\2024\営業部\第4四半期"

 

コードで階層を指定することで、

階層が深くなってもエラーの発生を防ぐ

ことができます。

 

このように階層を意識してパスを組み立てることで、組織的なファイル管理システムの構築が可能です。

 

親フォルダが存在しない場合の対処法

親フォルダが存在しない状態で子フォルダを作成しようとするとエラーが発生してしまいます。

 

この問題を解決する最も確実な方法は、

Dir関数を使って親フォルダの存在を確認すること

です。

 

フォルダの存在を確認するサンプルコードがこちら

If Dir("C:\親フォルダ", vbDirectory) = "" Then
MkDir "C:\親フォルダ"

 

上記のコードは

もし「親フォルダ」が存在しない場合、「親フォルダ」を作成する

という内容です。

 

たった2行のコードで、

親フォルダが存在しない状態で子フォルダの作成で発生するエラーを完全に防ぐ

ことができます。

 

フォルダ作成VBAにおいて、『フォルダの存在を確認するコード』は重宝されるコードなので、しっかり覚えておきましょう。

 

階層構造をExcelで管理する方法

階層構造をExcelで管理することで、複雑なフォルダ構成も視覚的に理解しやすくなります。

 

FileSystemObjectを使えば、

ファイルの詳細情報取得、サブフォルダの再帰的検索、そして複雑な文字列操作まで、

あらゆるファイル操作の自動化が可能です。

 

指定するフォルダ以降、全てのファイル名を階層別でリスト化するサンプルコードがこちら

Sub FileNameParsing()
Dim fso As Object
Dim fullPath As String
Dim folder As String
folder = "H:\ブログ関係\Excel"
Set fso = CreateObject("Scripting.FileSystemObject")
Call RecursiveFileSearch(folder)
End Sub
Sub RecursiveFileSearch(folderPath As String)
Dim fso As Object
Dim folder As Object
Dim file As Object
Dim subFolder As Object
Dim i As Long
Dim LastColumns As Long
i = 1
LastColumns = Cells(1, Columns.Count).End(xlToLeft).Column
Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder(folderPath)
'現在フォルダのファイルを処理
For Each file In folder.Files
Cells(i, LastColumns + 1) = file.Name
i = i + 1
Next file
'サブフォルダを再帰的に処理
For Each subFolder In folder.SubFolders
RecursiveFileSearch subFolder.Path
Next subFolder
End Sub

 

実行結果がこちら

 

ファイル数が多くて表示しきれませんでしたが、

指定したフォルダ以降、全てのファイル名を階層別に取得しリスト化

することができました。

 

ファイル名をリスト化するのではなく、フルパス情報をリスト化すれば、

階層構造の把握と修正に役立てることも可能です。

 

関連記事「ファイル名を取得するVBA」では、フォルダ情報を取得するFileSystemObjectの使い方が詳しく解説されています。

 

 

 

すぐに使えるフォルダ作成VBAコードサンプル集

エクセル業務でよく使われる3種類の『フォルダ作成を一括処理するVBA』をご紹介します。

  • 基本的なフォルダ作成VBA
  • 階層に対応できるフォルダ作成
  • エラーハンドリングを搭載したフォルダ作成

 

コピペしてすぐに使えるサンプルコードを掲載しているので、どのような処理が実行されるのかコードを動かして試してみてください。

これらのサンプルコードをベースに自分の業務に合わせてカスタマイズしていけば、

オリジナルの自動化ツールを作成できるようになります。

 

サンプルコードを使って手間のかかるエクセル作業を自動化しちゃいましょう。

 

基本的なフォルダ一括作成コード

『基本的なフォルダ一括作成VBA』のサンプルコードがこちら

Sub CreateFolders()
Dim i As Integer
Dim folderName As String
Dim basePath As String

basePath = "C:\MyFolders\"

For i = 1 To 10
folderName = Cells(i, 1).Value
If folderName <> "" Then
MkDir basePath & folderName
End If
Next i
End Sub

 

実行結果がこちら

上記コードは、

A1からA10までのセルに書かれたフォルダ名を読み取り、指定したパスに一括でフォルダを作成する

という内容です。

 

シンプルで理解しやすく、初心者にとって最適なスタートポイントとなるでしょう。

 

階層フォルダ対応コード

階層フォルダに対応したコードは、より複雑な業務要件に対応できる高機能版です。

 

複数の階層を同時に作成できるため、組織的なファイル管理業務で役立つでしょう。

 

階層フォルダに対応したフォルダ作成VBAのサンプルコードがこちら

Sub CreateHierarchyFolders()
Dim i As Integer
Dim parentFolder As String
Dim childFolder As String
Dim fullPath As String
Dim basePath As String

basePath = "C:\Projects\"

For i = 1 To 20
parentFolder = Cells(i, 1).Value
childFolder = Cells(i, 2).Value

If parentFolder <> "" Then
fullPath = basePath & parentFolder
If Dir(fullPath, vbDirectory) = "" Then
MkDir fullPath
End If

If childFolder <> "" Then
fullPath = fullPath & "\" & childFolder
MkDir fullPath
End If
End If
Next i
End Sub

 

実行結果がこちら

上記のコードは

A列の名前で「親フォルダ」を作成し、「親フォルダ」内にB列の名前で「子フォルダ」を作成する

という内容です。

 

親フォルダと子フォルダを同時に作成すると同時に既存フォルダのチェックができる実用的なVBAとなっています。

 

エラーハンドリング付き完全版コード

エラーハンドリング付きのVBAコードの設定は、

エクセル業務への導入において必要不可欠な対策

です。

 

予期しないエラーが発生しても適切に処理できるため、VBA未経験者でも安心して使用できます。

 

エラーハンドリング付きのサンプルコードがこちら

Sub CreateFoldersComplete()
Dim i As Integer
Dim folderName As String
Dim fullPath As String
Dim basePath As String
Dim errorCount As Integer

basePath = "C:\MyFolders\"
errorCount = 0

On Error GoTo ErrorHandler

For i = 1 To 100
folderName = Cells(i, 1).Value

If folderName <> "" Then
fullPath = basePath & folderName

If Dir(fullPath, vbDirectory) = "" Then
MkDir fullPath
Cells(i, 2).Value = "作成完了"
Else
Cells(i, 2).Value = "既に存在"
End If
End If
Next i

MsgBox "フォルダ作成が完了しました。エラー数: " & errorCount
Exit Sub

ErrorHandler:
errorCount = errorCount + 1
Cells(i, 2).Value = "エラー: " & Err.Description
Resume Next
End Sub

 

上記のコードは、

実行中にエラーが発生しても処理を継続し、結果をB列に表示する。さらにエラーの内容を表示する

という内容です。

 

業務での実用性を重視しつつ、デバックしやすいようエラー内容を一目で確認できる仕様になっています。

 

関連記事「エラーを無視するResume Nextの使い方」では、エクセル業務でよく活用されるエラーハンドリングの方法が紹介されています。

 

 

VBA初心者が『フォルダ作成を一括処理するVBA』を導入する方法

 

VBAなんて扱ったことないけど、業務内容に合わせた『フォルダ作成を一括処理するVBA』を導入したい!

 

こんな問題を解決する方法がこちら

  • マクロの開発を外注に依頼する
  • マクロが設定されたエクセルファイルをダウンロードする
  • 参考書やネットでVBAスキルを身に付ける

 

VBAスキルを身に着ける前は、「マクロ開発の外注」で対応していましたが、

今では自分で効率化マクロをサクッと導入しちゃいます。

 

完成されたマクロを使ってエクセル業務を処理する

作業効率が2倍以上アップ!!

便利すぎて自分でもマクロを設定したいと考え始める

参考書やネットの情報でVBAスキルを身に付ける

マクロ開発を代行できる程のスキルを習得

 

 

VBAは

他のプログラミングに比べて参考書やネットで紹介されている情報量が多いので初心者でも導入しやすい

という特徴があります。

 

外注した方が楽だけど、費用がかかる。自分で導入すれば費用は0円だけど時間がかかる。。

いずれにせよ、効率化マクロを導入できれば作業効率が飛躍的にアップするのは間違いありません。

 

あなたに合った方法で導入しちゃいましょう。

 

マクロ開発を外注に依頼する

マクロ開発を外注に依頼する方法は

VBAを全く扱えない方でもエクセル作業を自動化できる最も簡単な方法

です。

 

「フォルダ作成業務を自動化したい」「サーバー内のデータ整理作業を自動化したい」

こんな感じで実現したい内容を依頼するだけで業務内容に合ったマクロを開発してくれます。

 

Left Caption

ガッツポーズの人

完成まで本業に集中できるので効率的

 

 

デメリットは、費用がかかることだけ。

開発内容、依頼先によってかかる費用は大きく異なります。

私が会社員の頃利用していた業者さんは1マクロあたり2万円~3万円の費用がかかりました。

 

Left Caption

疑問がある人

ちょっと高くない。。。

 

ちなみに、マメBlogでもエクセルマクロ開発代行サービスを承っています。

開発内容の確認、VBAコードの設定、動作確認後の調整、など全ての工程を私(マメ父ちゃん)が行っているので、

費用が安い!スピード納期!!

でやらせてもらっています。

 

ほとんど独学で身に付けたVBAスキルなので、内容によっては開発できないこともあるのでご了承ください。

 

ご相談、見積もり依頼は完全無料ですので気になる方は下記のリンクよりお問合せ下さい。

 

 

マクロが設定されたエクセルファイルをダウンロードする

VBA初心者でも『マクロが設定されたエクセルファイルをダウンロード』することで、

すぐに使っているエクセルにマクロを導入することができます。

 

VBA初心者でも形になっているマクロをゲットできる、費用が安い、

というメリットがあります。

しかし、

想定するマクロを見つけることが難しい、業務内容に合わせるためのアレンジが必要

というデメリットもあります。

 

Left Caption

ガッツポーズの人

お目当てのマクロが見つかればラッキー

 

個人ブログやファイルを販売できるサイト「note」や「Tips」ではいろんなマクロの情報が掲載されているので是非参考にしてみてください。

 

今までマメBlogで受注した効率化マクロを下記のnoteで掲載していますので併せてチェックしてみてください。

 

 

 

参考書やネットでVBAスキルを身に付ける

先程も紹介しましたが、

VBAは他のプログラミングに比べて参考書やネットで紹介されている情報量が多いので初心者でも導入しやすい

プログラミングです。

 

言い換えると、

情報量が豊富なので自分で勉強できちゃう

ということです。

 

私のVBAスキルはほとんど独学で身に付けたもので、

考えた処理のほとんどをVBAで表現できるレベルにまで到達した!

と思っています。

 

私の作ったマクロをプロのプログラマーが見れば、

お前の書くコードはインチキだ!「変数の宣言」とか「引数」を正しく使えよ!!

と感じるはずです。

 

でも、

私からすればどうでもいい!!!想定した内容を正しく処理できればよくないですか!?

 

独学であっても『写真を貼り付けるマクロ』『全てのシートをPDF出力するマクロ』『連番を振るマクロ』など、

業務内容に合ったマクロを開発できるようになれます。

 

独学でVBAスキルを身に付けるコツは、

エラーが発生してもいいからひたすらコードを書く、なんでもいいからエクセル作業をマクロ化してみる

です。

 

とは言っても、全くの知識0の方は何をすればいいかわからないですよね。

 

VBA知識0の初心者の方は、参考書『たった1秒で仕事が片づくExcel自動化の教科書【増強完全版】』を読んでみてください。

 

VBAの知識0の方でもすいすい読み進められる内容になっています。

やさしい内容にも関わらず「え!!VBAを使えばこんなことできるの!?」と感動すると思います。

 

実際に私はこの参考書を読んでからVBAの勉強を始めました。

 

Left Caption

ひらめく人

VBA学習スタートのきっかけをくれた参考書


 

 

VBAの魅力を発見した後は、

ひたすら自動化したい内容のコードを書くだけ

です。

 

【VBA フォルダ作成】【VBA フォルダ一括作成】でネット検索すれば知りたいコードをすぐにゲットできます。

 

実現したい処理に向かって、「調べる→書いてみる→エラーを改善する→調べる」を繰り返していると

自然といろんなマクロが作れるようになっているはずです。

 

VBAに興味が湧いてきたという方は今からVBA学習をスタートさせちゃいましょう。