VBAで複数新規フォルダを一瞬でつくる方法【ネットワークフォルダ対応】
「これでVBAでも複数の新規フォルダをつくれる...」

VBAのMkDirは複数の新規フォルダ作成に対応してないが、今回のコードなら複数の新規フォルダ作成が可能。

さっそく紹介していこう。

作成するまえの準備

  1. VBAのエディタをひらき、上のメニュー、ツールを選択
  2. 参照設定から「Microsoft Scripting Runtime」にチェック

これで準備OK。つぎはコードを紹介していく。

複数の新規フォルダ作成コード【ネットワークフォルダ対応】

Sub multipleLayersMkDir(ByVal output_folder_path As String)

    Dim file_system As New FileSystemObject
    Dim folder_lists As Variant
    Dim i As Long
    Dim folder_path As String

    folder_lists = Split(output_folder_path, "\")

    For i = 2 To UBound(folder_lists)
        folder_path = folder_path + folder_lists(i) & "\"

        If folder_path = "\" Then
            folder_path = folder_path
        ElseIf folder_path = "\\" Then
            i = i + 1
            folder_path = folder_path + folder_lists(i) & "\"
        ElseIf file_system.FolderExists(folder_path) = False Then
            MkDir folder_path
        End If

    Next i

End Sub

簡単にいえば、1階層ずつフォルダがあるか検索して、なければフォルダ作成するイメージ。

つぎからコードを簡単に説明していこう。

フォルダのフルパスを分解して配列にいれる

folder_lists = Split(output_folder_path, "\")

ここでフォルダ名ごとに分解して、配列にする。これで1つづつフォルダを検索する準備が完了だ。

output_folder_pathに作りたいフォルダ階層を設定する。

"\"を追加する

For i = LBound(folder_lists) To UBound(folder_lists)
    folder_path = folder_path + folder_lists(i) & "\"

    If folder_path = "\" Then
        folder_path = folder_path
    ElseIf folder_path = "\\" Then
        i = i + 1
        folder_path = folder_path + folder_lists(i) & "\"

ここから配列として分解した各フォルダを1つづつ読み込んでフォルダがあるか確認していくことになるが。

まずネットワークフォルダに対応するため、"\"か"\\"のときの処理をしてフォルダとして読み込めるようにしている。

フォルダが存在してない場合フォルダを作成する

ElseIf file_system.FolderExists(folder_path) = False Then
    MkDir folder_path
End If

フォルダが存在しなければMkDirでフォルダを作成していく。

  1. FolderExistsでフォルダが存在するか確認し
  2. 存在しなければMkDirでフォルダを作成する

コードの使いかた

Sub makingFolders()

    Dim new_folder As String
    new_folder = "作成したいフォルダパス"

    Call multipleLayersMkDir(making_folder)

End Sub

new_folderに作成したいフォルダパスを入れるだけ。ぜひ試してみてくれ。

関連【VBA】業務効率化に便利なツール【まとめ】

事務作業を自動化してもっと"ラク"しませんか?

あなたの会社の事務作業...効率化してラクに。もっと重要な業務に集中できるようになります。

日々増えるルーティンの事務作業...
「この作業めんどくさい...」
「事務作業に時間をとられて他に集中できない...」

あなたの代わりにVBAを使ってパソコン業務を自動化。あなたはもっと価値のあることに時間を使うことができるため売上UP、ムダなコストの削減が期待できます。

また、作って終わりではなくつぎの3つのことを約束します。

  • しっかりドキュメント作成
  • きれいな見やすいコードでムダな工数カット
  • できるだけボタン1つポチッと押すだけで業務が完了

どんなにささいなめんどくさい事務作業でも相談してください。相談は無料です。
3年の業務効率化実績があるため、力になれるかもしれません。

※件名には「業務効率化の相談」と記載ください。できるだけ24時間以内に返信します。