【VBA】大量のファイル名変更!指定したフォルダ内を一括操作!

f:id:yshgs_elec:20200909215949j:plain

大量のファイルの名前を書き換えないといけない。ひとつひとつ手作業でやっていたら日が暮れそうだ。

この記事では、こんな悩みをエクセル(VBA)を使って一瞬で解決します。

さっそくやっていきましょう!

スポンサーリンク

やりたいことのイメージ共有

本題に入る前に、この記事で紹介する内容を共有化しておきましょう。

以下のようにあるフォルダ内に名前を書き換えたいファイルがたくさん入っていることを想定しています。

(テンプレートファイルをコピーしたときなんかに、よくこうなりますよね。)

f:id:yshgs_elec:20200909205353j:plain

この記事では、これらのファイルたちを、以下の画像のように好きな名前に一瞬で変更する方法をご紹介します。

f:id:yshgs_elec:20200909210929j:plain

あなたのやりたいこととイメージが一致していれば、ぜひ続きをご覧ください。

スポンサーリンク

ファイル名一括変更の手順

今回は以下のようなエクセルファイルを作成することで、ファイル名を一括変更していきます。

f:id:yshgs_elec:20200909212150j:plain

実際は以下の通りです。

①まずは上の画像のようにエクセルファイルに情報を記入する準備をする

②VBAを使って変更前のファイルを一括取得する(A列の情報を自動で取得する)

③変更後のファイル名を自分でエクセルシートに入力する(B列の情報を記入する)

④ファイル名変更コードを実行し、ファイル名を変更する

ここからはこれらの手順を詳細に説明していきます。

手順①エクセルシートを整える

この記事では、A4セル以降に記入されている名前のファイルを、B4セル以降に記入されている名前にそれぞれ変更するという形でVBAコードを作成しています。

基本的には以下の画像を完璧に真似して作っていただければOKです。

A2セルのファイルの保存場所だけ、あなたの状況に合わせて書き換えてください。

f:id:yshgs_elec:20200909211212j:plain

手順②A列の情報を自動で取得する

次は変更前のファイル名を取得していきます。

ここからはVBAコードを記入していきます。

VBAの使い方がわからない、という方は以下の記事を参考に、コードを記述できる環境を整えておきましょう。

www.higashisalary.com

VBAコードを記入する準備が整ったら、以下のコードを記入します。

Sub get_file_name()
    '変数の型を宣言
    Dim folder_path As String
    Dim file_name As String
    Dim i As Integer
    folder_path = Cells(2, 1) & "\"
    file_name = Dir(folder_path, vbNormal)
    i = 1
    Do Until file_name = ""
        Cells(i + 3, 1) = file_name
        i = i + 1
        file_name = Dir()
    Loop
End Sub

記述が終わったらこのマクロをさっそく実行してみましょう!

いざ実行!!

実行すると、以下の画像のように変更したいファイルがA列に一覧表示されます。

f:id:yshgs_elec:20200909212915j:plain

手順③B列の情報を手動で記入する

変更後のファイル名はさすがに自動設定はできませんので、変更したい名前をそれぞれ記入してください。

私の場合は以下のように記入を行いました。

f:id:yshgs_elec:20200909212150j:plain

※上の画像のように連番ファイルを作成する場合は基準となるセルの角をダブルクリックすると一瞬で記入することができます。

f:id:yshgs_elec:20200909213656j:plain

ここまでで下準備完了です。

手順④ファイル名変更を実行する

準備が整ったら、もう一度VBAの記述に戻ります。

次はファイル名変更コードを記入しましょう。

以下のコードを丸ごとコピーしてください。

Sub file_rename()
    '変数の型を宣言
    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

記述が終わったらこのマクロをさっそく実行してみましょう!

※今回はマクロが2つあるので、ご注意ください。

file_renameの方を実行します。

f:id:yshgs_elec:20200909214303j:plain

再び、いざ実行!!

 (実行しても、エクセルシート上はなにも変化はおきません。)

実行が終わったら、ファイルが保存してあったフォルダを確認してみましょう。

ファイル名がエクセルシートのB列に記入した名前に変わっているはずです。

スポンサーリンク

終わりに

というわけで今回は、指定したフォルダ内のファイルの名前を一括変更する方法をご紹介しました。

 

一度作っておけば、いろいろな場面で活用できるはずです。ぜひ時間のあるときに作っておきましょう。

 

なお、今回はファイル名変更専用のマクロでしたが、もしフォルダに対しても同じことをやりたい場合は以下の記事を参考にしてみてください。

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

 

このように、このブログでは、エクセル(VBA)を中心に、様々な業務効率化スキルを紹介しています。

■生産性の低い作業ははるべくしたくない。

■もっと業務を効率化したい。

こんな人はぜひ他の記事も読んでみてください。

また、VBAを使ってこんなことがしたいんだけど、やり方がわからない、という悩みを抱えているかたは、お気軽にコメント欄から質問してください。

私にわかる範囲であればご協力いたしますので。(もちろん無料です。)

最後に・・・

このブログを応援してあげても良いよ、という方は以下のボタンをポチっていただけると嬉しいです。

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

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

Twitterもやっていますので、興味があれば覗いてみてください。

それではまた!!

オススメ記事

www.higashisalary.com

www.higashisalary.com

コメント

  1. ユウ より:

    教えてください。
    この手順では、フォルダ名の変更は出来ないのでしょうか?
    それともこれの文字を少し変更すれば、フォルダ名の変更にも対応出来るのでしょうか?
    お手数ですがご教示いただけたら嬉しいです。

    • ヒガシ ヒガシ より:

      コメントありがとうございます(^^)
      ざっとコードを見直した限りはコード中にあるvbnormalのところをvbDirectoryに変更すればできるのではないかと思います。
      しかしながらそれだけだとフォルダもファイルもA列に取得されるはずですので、そこは注意が必要ですね。
      (検証はしてないので動かなかったらすみません。)

      いずれにせよそうゆう状況もよくありそうなので今度フォルダ専用のコードも書いて公開しますね(^^)

      • ユウ より:

        回答ありがとうございます。
        また公開されるのを楽しみにしています。
        なお、vbdirectlyへの変更を試したところ私の環境では何も変わらずファイル名のみが抽出されました。
        なお、fireの部分を全てfolderに変更しても変わらずファイル名のみが抽出されました。

  2. コウスケ より:

    一つ教えてほしいことがあります。

    ファイル名を取得する際、昇順で出して欲しいですが、方法ないでしょうか?

    ファイルが10個以上になると昇順ででてくれません。

    ファイル名が下記のように保存されているデータで昇順でファイル名を取得してくれるとありがたいです。

    保存場所
    1台目.jpg
    2台目.jpg



    12台目.jpg

    実際、だすと
    1台目.jpg
    10台目.jpg
    11台目.jpg
    12台目.jpg
    2台目.jpg
    3台目.jpg



    順番通りにでません。

    申し訳ないですが
    初心者なので、そのまま貼り付けられるようコード作っていただけるとありがたいです。
    よろしくお願いします。

    • ヒガシ ヒガシ より:

      ご質問ありがとうございます(^^)

      そのような状況の場合、1台目.jpgという情報が書き出されたセルの右下をダブルクリックすれば1から12まで順番に並ぶと思いますが、これで問題解決できますでしょうか?
      (できなかったらごめんなさい。)

  3. より:

    教えて頂きたいです💦
    「変更後ファイル名」の下に1行空けて
    名前を変更したいのですが、できますでしょうか。
    よろしくお願いします

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