【VBA】大量のフォルダ名を一括変更!既存のフォルダ名も自動取得!

 

この記事では、大量のフォルダ名をVBAを使って一括変更する方法をご紹介していきます。

 

大量のフォルダを準備するときに

①1つフォルダをつくって

②コピー&ペイスト

で増やすことってありますよね。

 

そうするとこうなるはず。

コピーで増やしたフォルダ一覧

 

で、これを任意の名前に書き換えて・・・

「いや、めんどくさい!!」

 

この記事を読んでいる人はきっとこうなっている人だと思います。

 

今回はこのような状況を効率的に解決する方法をご紹介します。

エクセルがあればだれでも簡単に実行できます。

 

それではやり方をご紹介していきます。

 

スポンサーリンク

事前準備①VBAの実行環境構築

まずは事前の準備から始めましょう。

今回はVBAというツールを使っていきます。

 

「VBAってなに?」

というかたはまずは以下の記事を参考にVBAを使えるようにしておきましょう。

エクセルマクロ(VBA)の始め方!初心者向けに画像を使って詳細解説

 

VBAくらいわかってるぜ、という方は次の工程に進んでください。

スポンサーリンク

事前準備②エクセルシートを整える

今回はエクセルシートに記入された情報をもとにフォルダ名の変更を行っていきます。

というわけでまずはその情報達を記述する場所を整えておきましょう。

 

今回は以下のような形にしておきました。

A2セルには名前を変更したいフォルダがたくさんはいっているフォルダのフルパスを入力しておきます。

※基本的にこのA2セル、A4、B4セル以降の情報だけを使いますので、A1、A3、B3セルは何を書いていても問題ありません。

情報を入力するためのエクセルシートの紹介

 

というわけでこれで事前準備は完了です。

 

いよいよコードの記述にはいっていきましょう。

 

スポンサーリンク

既存のフォルダ名を一括取得するコードの作成、実行

まずは先ほど整えたエクセルシートのA列に名前を変更したいフォルダ一覧を一括取得するコードを記述していきましょう。

 

以下がそのコードです。

Sub folder_search()
    '変数の型を宣言
    Dim folder_path As String
    Dim folder_name As String
    Dim i As Integer
    folder_path = Cells(2, 1) & "\"
    folder_name = Dir(folder_path, vbDirectory)
    i = 1
    Do Until folder_name = ""
        If folder_name <> "." And folder_name <> ".." And _
        GetAttr(folder_path & folder_name) = vbDirectory Then
            Cells(i + 3, 1) = folder_name
            i = i + 1
        End If
        folder_name = Dir()
    Loop
End Sub

ここではDir関数というものを活用することでフォルダ名を一括取得しています。

Dir関数について勉強したい方は以下の記事を参考にしてください。

【VBA】Dir関数の特性を詳細解説!ファイル確認や一括処理に超便利!

 

コードの記述が終わったらさっそくこいつを実行してみましょう。

※開発タブ⇒マクロ⇒folder_searchを選択⇒実行

 

今回探索を行うフォルダ(A2セルに記載しているフォルダ)の中身はこんな感じでしたね。

名前を変更したいフォルダ一覧

 

以下がさきほどのコードを実行した後の結果です。

指定フォルダ内のフォルダ名を一括取得した結果

 

問題なくすべてのフォルダ一覧を取得できていますね。

 

スポンサーリンク

変更後のフォルダ名を記述する

変更したいフォルダ一覧が取得できたら、次はそれぞれのフォルダ名をどのように変更するかを入力していきましょう。

※変更したくないフォルダはクリアして消しておきましょう。

 

今回はこんな感じで変更後のフォルダ名を指定しました。

変更後のフォルダ名を記述した例

 

これでフォルダ名を変更するために必要な情報はすべてそろいましたね。

スポンサーリンク

フォルダ名一括変更コードの作成、実行

最後にさきほどまでにエクセルシートに記述した内容をつかって、それぞれのフォルダ名を一括変更するVBAコードを記述⇒実行してみましょう。

 

まずはVBAコードの紹介です。

Sub folder_name_change()
    '変数の型を宣言
    Dim folder_path As String
    Dim j As Integer
    folder_path = Cells(2, 1) & "\"
    j = 1
    Do Until Cells(j + 3, 1) = ""
        Name folder_path & Cells(j + 3, 1) As folder_path & Cells(j + 3, 2)
        j = j + 1
    Loop
End Sub

 

フォルダ名を変更するためには以下のスキルを使います。

Name【変更前フォルダのフルパス】As【変更後のフォルダのフルパス】

 

これをシートの情報を参照しながら繰り返す、という作業を行っています。

 

最後に先ほどのコードを実行してみましょう。

※開発タブ⇒マクロ⇒folder_name_changeを選択⇒実行

 

以下が実行後のA2セルに記述したフォルダの中身です。

フォルダ名変更マクロの実行結果の確認

 

問題なくフォルダ名が変更できていますね。

 

スポンサーリンク

おわりに

というわけで今回はフォルダ名を一括変更する際に便利なマクロの作り方をご紹介しました。

ぜひこういったスキルを身に着け、業務効率化を進めていきましょう。

 

このように、私のブログではエクセルスキルはもちろん、様々なプログラミングスキルを紹介しています。

今は仕事中で時間がないかもしれませんが、ぜひ通勤時間中などに他の記事も読んでいただけると嬉しいです。

⇒興味をもった方は【ヒガサラ】で検索してみてください。

確実にスキルアップできるはずです。

 

最後に、この記事が役に立ったという方は、ぜひ応援よろしくお願いします。

↓ 応援ボタン

にほんブログ村 IT技術ブログ VBAへ
にほんブログ村

それではまた!

コメント

  1. いち より:

    はじめまして。
    フォルダ名の変換ですがサブフォルダにも対応するにはどうしたらいいでしょうか?
    ご教授のほど、宜しくお願いいたします

    • ヒガシ ヒガシ より:

      ご質問ありがとうございます。
      基本的にやることは同じで一覧で取得したフォルダの中にあるサブフォルダを一つ一つ取得していくしかないですね。
      自動でやるとこもできますが、ある程度のコード修正は必要です。

タイトルとURLをコピーしました