Excelで複数のファイル名を変更する作業は、対象ファイルが少なければ手作業でも対応できますが、同じフォルダ内に複数のブックがある場合は非常に手間がかかります。特に管理表とデータブックが分かれている業務では、決まったルールで一括変更できるVBAマクロを作成すると作業効率が大きく向上します。
この記事では、Excel VBAを使って、指定フォルダ内にある複数のExcelブック名を、セルに入力した変更前・変更後の一覧をもとに自動変更する方法を解説します。
Excel VBAでブック名を変更する基本的な考え方
Excel VBAでは、ファイル名の変更はNameステートメントを使用して行うことができます。開いているブックだけではなく、閉じた状態のExcelファイルでも、保存場所とファイル名が分かれば変更可能です。
例えば、同じフォルダ内に「002.xlsx」「003.xlsx」「004.xlsx」のようなファイルがあり、それぞれを「100.xlsx」「200.xlsx」「300.xlsx」に変更したい場合、変更前と変更後の名前を一覧化して処理すると簡単に自動化できます。
今回のように総括表ブックのセルに変更前名称と変更後名称を入力しておけば、その情報をVBAで読み取り、一括でリネームできます。
セルの一覧を利用して複数ファイルを変更するVBAコード
例えば、総括表シートのL11:L16に変更前のファイル名、M11:M16に変更後のファイル名を入力している場合、以下のようなマクロで処理できます。
Sub ブック名一括変更()Dim i As LongDim folderPath As StringDim oldName As StringDim newName As StringfolderPath = ThisWorkbook.Path & "\"For i = 11 To 16 oldName = folderPath & Range("L" & i).Value & ".xlsx" newName = folderPath & Range("M" & i).Value & ".xlsx" If Dir(oldName) <> "" Then Name oldName As newName End IfNext iMsgBox "ファイル名の変更が完了しました。"End Sub
このマクロでは、現在開いている総括表ブックと同じフォルダにあるExcelファイルを対象にしています。そのため、総括表ブックとデータブックを同じフォルダに保存しておく必要があります。
例えば「26.8.20 報告分」というフォルダ内に総括表.xlsx、002.xlsx、003.xlsxなどがある場合、総括表.xlsxを開いてマクロを実行すると、002.xlsxが100.xlsxへ変更されます。
ファイル名変更時に拡張子を確認する
Excelファイルの名前変更では、拡張子の扱いに注意が必要です。一般的なExcelブックの場合は「.xlsx」、マクロ付きブックの場合は「.xlsm」を指定します。
例えば、対象ファイルがマクロ付きブックの場合、以下のように変更します。
oldName = folderPath & Range("L" & i).Value & ".xlsm"newName = folderPath & Range("M" & i).Value & ".xlsm"
拡張子が違うとファイルが見つからず、変更処理が実行されません。実際のファイル形式に合わせて設定してください。
CONCATENATE関数で作成した名前でも利用できるか
セルM11:M16の変更後名称がCONCATENATE関数などで作成された文字列でも、基本的には問題ありません。
VBAのRange.Valueは、セルに表示されている計算結果を取得します。そのため、数式で作られた文字列でも、結果が「100」「200」のような文字列になっていれば、そのまま新しいファイル名として使用できます。
例えば、M11セルに「100」という結果が表示されている場合、VBAではRange(“M11”).Valueとして「100」を取得し、100.xlsxというファイル名へ変更できます。
実行前に確認しておきたい注意点
ファイル名変更マクロを実行する前には、念のため対象フォルダのバックアップを作成することをおすすめします。
- 変更対象ファイルを閉じておく
- ファイル名変更後に同じ名前のファイルが存在しないか確認する
- 重要なデータはコピーを保存しておく
- 変更前後の一覧が正しいか確認する
特に同じ名前のファイルがすでに存在する場合、エラーになる可能性があります。業務データの場合は、少数のファイルでテストしてから本番実行すると安全です。
まとめ
Excel VBAを利用すると、同じフォルダ内にある複数の閉じたExcelブックの名前を、一覧表をもとに一括変更できます。
変更前の名前と変更後の名前をセルに入力しておけば、Nameステートメントを使った簡単なマクロで自動処理が可能です。
ファイル形式や保存場所、拡張子には注意が必要ですが、一度仕組みを作れば毎回手作業で名前を変更する必要がなくなり、業務効率化につながります。

コメント