くまおやぢの雑記帳

人生は、やろうと思った瞬間がスタートライン。Excel・Access・ガジェット・スマホ関係のネタを綴っています。あなたの「できる」を応援します。

Excel VBAでファイル名を一括変更|リネームマクロについて徹底解説

 

 

 

01. はじめに

日々の業務の中で、「大量のファイル名をひとつひとつ手作業で変更する」──そんな面倒な作業に悩まされたことはありませんか?特に、写真や書類、帳票などのファイルをルールに従って整理・命名し直す業務では、時間も手間もかかり、ヒューマンエラーも起きやすくなります。

しかし、そんな非効率な作業も、ExcelとVBA(マクロ)を使えば一瞬で解決できます。本記事では、Excelシートに記載された情報を元に、Windowsのフォルダ内にあるファイル名を一括で変更する方法をわかりやすく解説します。

プログラミングの専門知識がない方でもご安心ください。コピー&ペーストで使えるマクロコードと、初心者でもつまずかないように丁寧な手順を用意しました。

この機能を活用すれば、例えば以下のようなことが可能になります

  • 写真ファイルに日付やカテゴリ名を付加する
  • エクスポートされた帳票ファイルの名称を統一する
  • 報告用資料の命名規則に自動で従わせる

Excelをただの表計算ソフトではなく、「作業効率を劇的に上げるツール」として活用する一歩を、この記事で踏み出してみましょう。

02. この記事でできること

本記事では、ExcelとVBA(マクロ)を使って「指定したフォルダ内のファイル名を、一括で変更する方法」を学ぶことができます。手作業でひとつずつリネームする必要がなくなるため、作業時間を大幅に短縮し、作業ミスも防げます。

具体的には、以下のような内容を段階的に解説します

  • Excelでリネーム対象のファイル名を一覧化する方法
  • 新しいファイル名をExcel上で定義する方法
  • VBAマクロを使ってファイル名を一括変更するコードの使い方
  • リネームマクロのカスタマイズ例(バックアップ、拡張子の制御、ログ出力など)

初心者の方でも実践できるよう、完成済みのVBAコードをコピペで利用可能にし、各ステップでの注意点も丁寧に解説しています。

対象とするファイルは、たとえば以下のようなケースが想定されます

  • デジカメやスマホで撮影した大量の画像ファイル
  • 業務で出力されるPDF帳票やExcelファイル
  • 週報や月報など、一定ルールに従った名称に変更したい報告資料

「ExcelとVBAを使って、日々の面倒な作業を効率化したい」という方にとって、本記事は実用的な第一歩となるはずです。

03. 基本の考え方|Excel×VBAでファイル名を変える仕組み

ExcelとVBAを使ったリネーム処理は、「旧ファイル名」と「新ファイル名」の対応表をExcelに作り、それを元にVBAでファイル名を一括で書き換えるというシンプルな仕組みです。

このセクションでは、VBAマクロでファイル名を変更するための基本的な考え方を解説します。

ファイルの一覧を取得する

まずは、対象となるフォルダ内のファイル名をExcelに一覧として取り込みます。これにより、どのファイルをリネームするのかを明確にできます。

この一覧は、VBAで自動取得する方法もありますが、まずは手動でファイル名をコピー&貼り付けしても問題ありません。

新しい名前をExcelに記載する

次に、旧ファイル名の隣の列に、新しく付けたいファイル名を記入します。これで「旧 → 新」の対応関係が完成します。

例:

旧ファイル名 新ファイル名
report001.pdf 2025年_営業報告_1.pdf
report002.pdf 2025年_営業報告_2.pdf

VBAで旧→新へリネーム処理を行う

Excelに記載された「旧ファイル名」「新ファイル名」のペアを1行ずつ読み取り、対応するファイルを実際にリネームする処理をVBAで自動化します。

このとき、ファイルの保存場所(パス)を事前に指定しておく必要があります。また、拡張子も正しく含めておく必要があります(.pdf、.xlsx、.jpgなど)。

基本構造は非常にシンプルですが、実行する際にはいくつか注意点もあるため、次章で実際の構築ステップを詳しく解説します。

04. 実践準備|必要なファイルとExcelの構成

VBAマクロを使ってファイル名を一括変更する前に、必要な準備をしておくことが大切です。この章では、実行環境を整えるための手順とExcelファイルの作り方を紹介します。

フォルダの構造を整える

まず、リネーム対象のファイルがすべて入っているフォルダを用意します。
例:C:\Users\YourName\Documents\RenameTarget

このフォルダ内にあるすべてのファイルに対して、Excelで設定した新しい名前を反映させます。

ポイント:対象ファイルは同一フォルダ内にまとめておくことが必須です。サブフォルダは今回のスクリプトでは対象外となります。

Excelの列構成を用意する

次に、Excelファイルを新規作成し、以下のような2列を準備します。

A列:旧ファイル名 B列:新ファイル名
document1.docx 契約書_2025年版.docx
document2.docx 見積書_2025年版.docx

注意点として、拡張子(.docxや.pdfなど)を含めて記載してください。拡張子が異なると正しく処理されません。

ファイル名の拡張子に注意する

リネーム処理では、ファイルの種類(拡張子)を正しく把握しておくことが重要です。たとえば、report1 というファイルと report1.pdf は別物として扱われます。

拡張子を省略してしまうと、ファイルが見つからずにエラーになるため、必ず元ファイルと一致する拡張子を記載しましょう。

信頼性のためにExcelファイルも保存しておく

リネーム前後の対応関係を記録として残しておくことで、「元に戻したい」と思ったときにも安心です。Excel自体が履歴表になるので、処理前に必ず保存しておきましょう。

05. コピペで使える!リネームマクロのコード解説

ここでは、実際にExcel上でファイル名を一括変更するVBAマクロのコードを紹介します。マクロを使ったことがない方でも、以下の手順に沿って設定すれば問題ありません。

マクロを使う準備(初回のみ)

  1. Excelを開き、[Alt + F11]キーでVBE(Visual Basic Editor)を開く
  2. 「挿入」>「標準モジュール」を選択
  3. 表示されたコードウィンドウに、以下のコードを貼り付ける

リネームマクロのコード

Sub RenameFiles()
    Dim folderPath As String
    Dim oldName As String, newName As String
    Dim i As Long
    Dim fso As Object
    Dim file As Object

    ' フォルダーパスを指定(最後に \ を付ける)
    folderPath = "C:\Users\YourName\Documents\RenameTarget\"

    ' FileSystemObjectを使用
    Set fso = CreateObject("Scripting.FileSystemObject")

    ' A列=旧ファイル名、B列=新ファイル名として処理
    i = 2 ' 1行目はヘッダーと仮定
    Do While Cells(i, 1).Value <> ""
        oldName = folderPath & Cells(i, 1).Value
        newName = folderPath & Cells(i, 2).Value

        If fso.FileExists(oldName) Then
            fso.MoveFile oldName, newName
        Else
            Debug.Print "ファイルが見つかりません: " & oldName
        End If
        i = i + 1
    Loop

    MsgBox "リネームが完了しました", vbInformation
End Sub

コードの概要とポイント

  • folderPath:対象のフォルダパスを指定(環境に合わせて変更)
  • Cells(i, 1):A列の旧ファイル名を取得
  • Cells(i, 2):B列の新ファイル名を取得
  • FileSystemObject:ファイル操作に使われるVBAの標準機能

よくあるエラーとその対処法

  • 「ファイルが見つかりません」
    → パスやファイル名が正しくない。拡張子を含めて確認。
  • 「Permission Denied(アクセス拒否)」
    → 開いたままのファイルや読み取り専用ファイルがあるとエラー。事前に閉じておく。
  • 「指定したファイルは存在しません」
    → フォルダ名の最後に\(バックスラッシュ)を入れ忘れているケースが多い。

このマクロはシンプルながら非常に実用的です。次章では、さらに便利な機能を追加する「応用編」についてご紹介します。

 

 

 

06. 応用編|リネームマクロをもっと便利にする改良アイデア

基本のリネームマクロが動作するようになったら、さらに便利に使いこなすための「改良ポイント」を取り入れてみましょう。ちょっとした工夫で、実用性がぐんとアップします。

変更前にバックアップを取る機能を追加

元ファイルが消えてしまうと困るケースでは、リネーム前にコピーを保存しておくのが安心です。以下はリネーム前にバックアップフォルダへコピーする処理の例です

' バックアップフォルダ
backupPath = "C:\Users\YourName\Documents\Backup\"
If Not fso.FolderExists(backupPath) Then fso.CreateFolder backupPath
fso.CopyFile oldName, backupPath & Cells(i, 1).Value

この処理を、MoveFileの前に挿入することで安全性が高まります。

特定の拡張子だけに絞って処理する

たとえば「.pdfファイルだけを対象にする」といった場合、以下のように条件分岐を加えることができます:

If LCase(fso.GetExtensionName(oldName)) = "pdf" Then
    fso.MoveFile oldName, newName
End If

これにより、特定の形式のファイルのみを安全に処理できます。

変更結果のログを残す処理を加える

処理した内容を記録として残したい場合は、C列やD列に「リネーム済」などの結果を書き込むのがおすすめです。

Cells(i, 3).Value = "OK"

また、ファイルの存在確認やエラー時には「NG」や「未処理」などと記録することで、あとから見返すことが可能になります。

ユーザーにフォルダ選択をさせる

フォルダパスをコードに直接書かず、ユーザーに選ばせたい場合は以下のコードを活用できます:

With Application.FileDialog(msoFileDialogFolderPicker)
    .Title = "フォルダを選択してください"
    If .Show = -1 Then
        folderPath = .SelectedItems(1) & "\"
    Else
        Exit Sub
    End If
End With

これを使えば、毎回フォルダを動的に指定できる柔軟なマクロになります。

実用性を高める小技

  • ファイル名に日付や連番を付加する
  • ファイル名の特定文字列を置換する(例:「仮」→「正式」)
  • 同名ファイルが存在する場合に上書きせずスキップする処理

このような応用テクニックを加えていくことで、マクロの信頼性と汎用性が格段に向上します。

07. 注意点とトラブル対策

リネームマクロは非常に便利ですが、ファイル操作を直接行うため「取り返しのつかないミス」が起こる可能性もあります。この章では、実行前に必ず知っておきたい注意点と、よくあるトラブルへの対処法を紹介します。

上書き防止のための命名ルールを意識する

同じ名前のファイルがすでに存在している状態でMoveFileを実行すると、ファイルが強制的に上書きされる可能性があります。

これを防ぐには、以下のような対応が有効です

  • 新ファイル名に日付や連番を付加する
  • 同名ファイルがある場合はスキップまたは別名に変更
If fso.FileExists(newName) Then
    MsgBox "すでに同名ファイルがあります:" & newName
    ' 上書きを避ける処理(例:連番追加)などを入れる
Else
    fso.MoveFile oldName, newName
End If

拡張子の違いによるエラーに注意

旧ファイル名や新ファイル名に拡張子が付いていないと、正しく処理されません。ファイル名の末尾には必ず .pdf.xlsx などの拡張子を記載してください。

特に自動で拡張子を非表示にしているWindows環境では、ファイル名の認識ミスが起きやすくなります。

一度に大量処理する際のVBA制限

数百~数千件のファイルを一括処理する場合、処理時間が長くなったり、途中でVBAが停止することもあります。

以下のような対策を講じましょう

  • 一度に処理する件数を制限(例:100件ずつ)
  • 処理中に進捗を表示して、止まっていないことを確認
  • 定期的に処理結果を保存

マクロを有効にするセキュリティ設定の確認

最近のExcelは、セキュリティ強化の影響でマクロが無効化されているケースがあります。以下を確認してください:

  1. Excelでファイルを開いた際に「コンテンツの有効化」ボタンを押す
  2. 「ファイル」→「オプション」→「セキュリティセンター」でマクロ設定を確認

誤操作に備えてバックアップは必須

ファイルのリネームは元に戻すのが難しい操作です。実行前に対象フォルダ全体をコピーしておくなど、作業前のバックアップを必ず取りましょう。

事前の備えがあるだけで、安心してマクロを使うことができます。

08. よくある質問(FAQ)

この章では、リネームマクロに関してよく寄せられる質問や、初心者がつまずきやすいポイントについてQ&A形式でまとめました。

Q1. 「ファイルが見つかりません」と表示されます

A:ExcelのA列に記載された旧ファイル名と、実際のファイル名(および拡張子)が一致していない可能性があります。以下を確認してください

  • 拡張子(.pdf、.xlsx など)が含まれているか
  • 大文字・小文字の違い(Windowsでは基本的に区別しないが、まれに影響あり)
  • 指定フォルダに実際にそのファイルが存在するか

Q2. マクロが何も起こらず終了してしまいます

A:ファイル名の記載ミスや、フォルダパスの指定ミスが考えられます。以下をチェックしてみましょう:

  • folderPathの最後に「\(バックスラッシュ)」が付いているか
  • 対象ファイルのパスに全角文字や日本語が含まれていて、正常に処理されていないケースもあります

Q3. Macでも使えますか?

A:このVBAマクロはWindows環境専用です。FileSystemObjectを使っているため、MacのExcelでは動作しません。

Mac環境でファイルリネームを自動化したい場合は、AppleScriptやAutomator、Power Automate for Desktop などの代替手段が必要です。

Q4. リネーム前に確認メッセージを出したいのですが?

A:以下のようにMsgBoxを挿入すれば、1件ずつ確認しながら処理を行うことも可能です:

If MsgBox("リネームしますか?" & vbCrLf & oldName & " → " & newName, vbYesNo) = vbYes Then
    fso.MoveFile oldName, newName
End If

ただし、件数が多い場合は非効率になるため、少量の処理時に限定するのが良いでしょう。

Q5. リネーム後のファイルが消えてしまいました

A:正確には「消えた」のではなく、別の名前に置き換えられただけです。
ファイルが見当たらない場合は、新しいファイル名でフォルダ内を再確認してください。

また、うっかり同名ファイルが存在した場合、上書きされてしまった可能性もあります。これを防ぐには、実行前に必ずバックアップを取るようにしましょう。

 

 

 

09. さらに効率化したい人へ|他の自動化アイデア

ファイル名の一括変更が自動化できるようになると、「他にも自動化できる作業はないか?」と考えたくなるはずです。ここでは、リネームマクロと合わせて使える、実用的なExcel×VBAの自動化アイデアをいくつか紹介します。

フォルダを自動作成し、整理も自動化

ファイルを分類・整理したい場合、Excelのリストに基づいてフォルダを自動生成するマクロも便利です。

Sub CreateFolders()
    Dim i As Long
    Dim folderPath As String
    folderPath = "C:\Users\YourName\Documents\分類先\"

    For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
        If Dir(folderPath & Cells(i, 1).Value, vbDirectory) = "" Then
            MkDir folderPath & Cells(i, 1).Value
        End If
    Next i
End Sub

これを応用すれば、リネームしたファイルを対応するフォルダに自動で振り分けることも可能です。

ファイル名に日付・連番を自動追加

報告書や写真など、規則的なファイル名を付けたいときは、VBAで自動的に日付や連番を組み込む処理を加えることも可能です。

newName = "報告書_" & Format(Date, "yyyymmdd") & "_" & i & ".xlsx"

こうした命名ルールを取り入れると、ファイルの検索性・整理性が格段に向上します。

文字列置換によるファイル名調整

ファイル名に含まれる特定の文字列を一括で置換したい場合も、VBAで対応できます

newName = Replace(Cells(i, 1).Value, "旧語", "新語")

例えば「仮版」→「正式版」、「temp」→「final」などの置換に活用できます。

Power Automateと連携して、完全自動化へ

より高度な自動化を目指す場合、MicrosoftのPower Automateを使えば、以下のようなことも可能になります

  • 特定のフォルダに新しいファイルが追加されたら、VBAマクロを自動実行
  • リネーム完了後、自動でメール通知を送信
  • SharePointやOneDriveとの連携でチーム共有を自動化

VBAだけで完結しないケースでも、こうしたツールと組み合わせることで、さらなる時短・省力化が期待できます。

自動化アイデアの考え方

「面倒だな」と感じる作業こそ、自動化のチャンスです。今回のリネーム処理をきっかけに、他の反復作業にも目を向けてみましょう。

ExcelとVBAは、ただの表計算ソフトではなく、現場を支える業務効率化の強力なツールです。

10. まとめ

この記事では、ExcelとVBAを使ってフォルダ内のファイル名を一括で変更する方法を、初心者にもわかりやすく解説しました。

もう一度、この記事で学んだ内容を振り返ってみましょう

  • Excelに「旧ファイル名」「新ファイル名」を一覧化する方法
  • VBAでファイル名を読み取り、リネームを実行するマクロの仕組み
  • コピペで使える基本コードと、そのカスタマイズ方法
  • バックアップ・拡張子・上書きなどの注意点とトラブル対策
  • フォルダ自動生成や文字列置換など、応用的な自動化アイデア

Excel VBAによるリネームマクロは、単なる時短ツールではなく、ヒューマンエラーの防止や、作業品質の向上にも大きく貢献します。

「Excelでファイル名なんて変えられるの?」と思っていた方も、この記事を読んだ今なら、ひとつ上のステージへ踏み出せるはずです。

まずは小さなフォルダで試してみてください。そして、確実に便利さを実感できたら、業務や日常の作業にも取り入れてみましょう。

手作業から解放される第一歩は、Excelと少しの勇気から。