フォルダ内のファイル名の変更
課題・悩み「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を使ってファイル名を一括で変更する方法について詳しく解説しました。
この方法を利用すれば、大量のファイル名を短時間で効率的に変更することができます。
ぜひ、ご自身の環境に合わせて設定し、活用してください。
コメント