業務などで大量のファイル名を変更する場面はありませんか?
そんなときに便利なのが、ExcelVBAで一括リネームできるマクロです。
今回はエクセルでフォルダ内のファイル名を一括変更することができるマクロの作り方を紹介します。
始める前に
今回使用しているExcelデータは、以前の記事でご紹介した「エクセルにフォルダ内のファイル名を一括取得するマクロ」をもとに作成したものです。
そのため、記事をご覧いただいていない方にとっては、内容が少し分かりにくい部分があるかもしれません。
今回の内容をよりスムーズにご理解いただくためにも、ぜひ以下の記事をご一読いただければと思います。

エクセルでフォルダ内のファイル名を一括変更するマクロ
エクセルデータの作成ができたら、さっそくファイル名を一括変更していきましょう。
以前作成した「ファイル名取得」のエクセルファイルを開いてください。

シート準備
シートのB列の1行目に「変更後ファイル名」と入力。
その下の行にA列に入力されているファイル名から変更したいファイル名を入力(拡張子まで入力してください)

これでシートの準備は終了です。続いてコマンドボタンを作成していきましょう。
コマンドボタンの作成
「開発」タブから「挿入」をクリックしてActiveXコントロール内の「コマンドボタン」をクリック

適切な位置にボタンを配置

ボタンを右クリックして「プロパティ」をクリック

オブジェクト名を「changeName」Captionを「ファイル名変更」に変更してプロパティを閉じる

これでコマンドボタンの作成は終了です。いよいよVBAコードを作成しましょう。
VBAコード
さきほど作成したコマンドボタンを右クリックして「コードの表示」をクリック

表示されているエディターの「Private Sub changeName_Click()」内にコードを入力
※同画面内にファイル名取得用のコードが既に表示されていますが、こちらは編集しないでください。
ファイル名変更のVBAコード
Private Sub changeName_Click()
Dim fd As FileDialog
Dim fs As Object
Dim path As String
Dim i As Long
Dim lastRow As Long
Dim oldName As String
Dim newName As String
Dim oldExt As String
Dim newExt As String
Dim fso As Object
Dim renamedCount As Long
Dim skippedCount As Long
' フォルダ選択ダイアログ(再度選ばせる)
Set fd = Application.FileDialog(msoFileDialogFolderPicker)
With fd
.Title = "変更を適用するフォルダを選択してください"
If .Show <> -1 Then Exit Sub
path = .SelectedItems(1)
If Right(path, 1) <> "\" Then path = path & "\"
End With
Set fso = CreateObject("Scripting.FileSystemObject")
lastRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
renamedCount = 0
skippedCount = 0
With ActiveSheet
For i = 2 To lastRow
oldName = Trim(.Cells(i, 1))
newName = Trim(.Cells(i, 2))
If oldName = "" Or newName = "" Then GoTo SkipLine
oldExt = LCase(fso.GetExtensionName(oldName))
newExt = LCase(fso.GetExtensionName(newName))
' 拡張子が一致していない場合はスキップ
If oldExt <> newExt Then
.Cells(i, 3).Value = "拡張子不一致"
skippedCount = skippedCount + 1
GoTo SkipLine
End If
If fso.FileExists(path & oldName) Then
Name path & oldName As path & newName
.Cells(i, 3).Value = "変更済"
renamedCount = renamedCount + 1
Else
.Cells(i, 3).Value = "ファイルなし"
skippedCount = skippedCount + 1
End If
SkipLine:
Next i
MsgBox "ファイル名の変更が完了しました。" & vbCrLf & _
"変更されたファイル: " & renamedCount & " 件" & vbCrLf & _
"スキップされたファイル: " & skippedCount & " 件", vbInformation
End With
End Sub
これでコードの入力を終了です。エディターを閉じて実際にマクロを実行してみましょう。
マクロ実行
「ファイル名変更」ボタンをクリックしてください

ファイルが保存されているフォルダを選択してOKをクリックしてください。
※下記画像は例です。実際にはご自身のパソコンにあるフォルダを選択してください。

マクロが実行されました。

フォルダ内のファイル名が変更されています。

まとめ
いかがでしたでしょうか。手動でフォルダ内の大量のファイル名を変更しようとすると、かなりの時間がかかってしまいますが、今回のマクロを使用すれば一瞬ですべてのファイル名を変更することができ、業務効率することができます。
よければ試してみてください!!
コメント