非プログラマーでもできる!業務の自動化

【Excel VBA】ファイル名を一括変更・一括置換する方法

当ページのリンクの一部に広告が含まれています。

課題・悩み「Excelの置換機能のようにファイル名を一括変更したい」

解決策「ファイル名を一括変更するVBAマクロのコード」を解説

Excel VBAを使って、特定のフォルダ内にあるファイルの名前を一括変更する方法について解説します。

この方法は、Excelシートにリスト化された元のファイル名と新しいファイル名を基に、ファイル名を一括で変更するための便利なツールです。

この記事では、初心者にも分かりやすく、コードの説明と環境設定について詳しく説明します。

この記事では

【ファイル名を一括変更するVBAマクロのコード】を図解で解説しています。

VBAマクロファイルを配布中。

以下のボタンよりダウンロードしてください。

目次

フォルダ内のファイル名を一括で置換変更するVBAマクロのコード

このVBAコードは、指定されたディレクトリ内のファイル名を変更します。

Excelのシート「Sheet1」にあるデータを読み取り、ファイル名を変更する処理を行います。

元のファイル名と拡張子を指定し、新しいファイル名に変更します。

拡張子は変更せずにそのまま維持されます。


Option Explicit

Sub RenameFiles()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    Dim basePath As String
    basePath = ws.Range("B1").Value
    
    Dim oldFileName As String
    Dim fileExtension As String
    Dim newFileName As String
    Dim i As Integer
    Dim oldFilePath As String
    Dim newFilePath As String
    
    i = 6
    Do While ws.Range("B" & i).Value <> ""
        oldFileName = ws.Range("B" & i).Value
        fileExtension = ws.Range("C" & i).Value
        newFileName = ws.Range("D" & i).Value
        
        ' Dセルが空欄の場合、またはBセルとDセルの値が同じ場合はスキップ
        If newFileName = "" Or newFileName = oldFileName Then
            i = i + 1
            GoTo NextIteration
        End If
        
        oldFilePath = basePath & "\" & oldFileName & "." & fileExtension
        newFilePath = basePath & "\" & newFileName & "." & fileExtension
        
        ' ファイルが存在するか確認
        If Dir(oldFilePath) <> "" Then
            Name oldFilePath As newFilePath
        Else
            MsgBox "ファイルが存在しません: " & oldFilePath, vbExclamation
        End If

NextIteration:
        i = i + 1
    Loop
    
    MsgBox "ファイルの名前変更が完了しました。", vbInformation
End Sub

必要な環境設定

1. Excelワークブック

コードを実行するExcelファイルに、このVBAマクロを含むモジュールを追加します。

2. データの準備

「Sheet1」に以下のデータを用意します。

B1

基本パス(ファイルが存在するフォルダのパス)

B6以降

元のファイル名

C6以降

ファイルの拡張子(例:”txt”, “jpg”)

D6以降

新しいファイル名

注意点

処理時間

データが大量にある場合、処理に時間がかかる可能性があります。

操作の取り消し不可

VBAマクロで実行した操作は元に戻せないため、事前にデータのバックアップを取ることをお勧めします。

処理ごとの解説

変数の宣言と初期化

必要な変数を宣言し、ワークシートと基本パスを取得します。

vba Dim ws As Worksheet Set ws = ThisWorkbook.Sheets("Sheet1") Dim basePath As String basePath = ws.Range("B1").Value Dim oldFileName As String Dim fileExtension As String Dim newFileName As String Dim i As Integer Dim oldFilePath As String Dim newFilePath As String

ループの開始

行をループしながら、元のファイル名、拡張子、新しいファイル名を取得します。

vba i = 6 Do While ws.Range("B" & i).Value <> "" oldFileName = ws.Range("B" & i).Value fileExtension = ws.Range("C" & i).Value newFileName = ws.Range("D" & i).Value

スキップ条件のチェック

新しいファイル名が空、または元のファイル名と同じ場合、次の行へスキップします。

vba If newFileName = "" Or newFileName = oldFileName Then i = i + 1 GoTo NextIteration End If

ファイルパスの設定

元のファイルパスと新しいファイルパスを設定します。

vba oldFilePath = basePath & "\" & oldFileName & "." & fileExtension newFilePath = basePath & "\" & newFileName & "." & fileExtension

ファイルの存在確認と名前変更

ファイルが存在するか確認し、存在する場合はファイル名を変更します。

存在しない場合はメッセージを表示します。

vba If Dir(oldFilePath) <> "" Then Name oldFilePath As newFilePath Else MsgBox "ファイルが存在しません: " & oldFilePath, vbExclamation End If

次の行へ

次の行へ進むためのインクリメントとラベル設定

vba NextIteration: i = i + 1 Loop

完了メッセージ

ファイル名変更処理が完了したことをメッセージボックスで通知します。

vba MsgBox "ファイルの名前変更が完了しました。", vbInformation

環境に合わせて変更する必要がある箇所

このコードを自分の環境で利用する場合、以下の点を変更する必要があります。

ワークシート名

使用するシート名を「Sheet1」から実際に使用するシート名に変更します。

Set ws = ThisWorkbook.Sheets("Sheet1") を Set ws = ThisWorkbook.Sheets("YourSheetName") に変更します。

ワークシート名の変更

使用するシート名を実際のシート名に変更します。

vba Set ws = ThisWorkbook.Sheets("YourSheetName")

基本パス

ファイルが存在するフォルダのパスを指定します。

このパスは B1 セルに入力します。

Excelの B1 セルにフォルダのパスを入力します。例: C:\Users\YourUsername\Documents

基本パスの設定

基本パスをExcelの B1 セルに入力します。

例として、Excelの B1 セルに C:\Users\YourUsername\Documents を入力します。

データの入力範囲

ファイル名と拡張子、新しいファイル名を入力するセル範囲を B6 から下、C6 から下、D6 から下としていますが、データの開始行や列を変更する場合、それに応じてコードを変更します。

i = 6 などの値を変更します。

データの入力範囲の変更

データの開始行を変更する場合は、開始行の値を変更します。

例として、データの開始行を 10 行目に変更する場合: vba i = 10

まとめ

この記事では、Excel VBAを使ってファイル名を一括で変更する方法について詳しく解説しました。

この方法を利用すれば、大量のファイル名を短時間で効率的に変更することができます。

ぜひ、ご自身の環境に合わせて設定し、活用してください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次