パソコンを使っていると日々ファイルが増えていきます。
日々増え続けるファイルを整理するために、ファイル名をまとめて変更する作業が発生することがあります。
そんなときに、数個のファイルならエクスプローラー上で修正すればいいでしょう。
しかし、大量のファイルの名前を変更したい場合、手作業で変更するとなると大変です。
一括してファイル名を変更する、リネーム用のツールもありますが、VBA(Visual Basic for Applications)でExcelマクロを作り、ファイル名を変更することもできます。
そんなマクロをご紹介しておきます。
Sub ファイル名をまとめて変更する()
'アクティブシートのA列に入力されているファイル名を
'B列に入力されているファイル名に変更する
'
'A1セルに、ファイル名を変更したいフォルダのフルパスを入力しておいてください
'A5セル以下に、現在のファイル名を入力しておいてください
'B5セル以下に、新しいファイル名を入力しておいてください
'C5セル以下には実行結果が自動的に入力されます
Dim fp As String
Dim i As Long
Dim fo As String
Dim fn As String
'パスを変数に格納
fp = Range("A1").Value & "\"
On Error GoTo ERR_HANDL
Range("C4").Value = "実行結果"
'5行目から最終行までループ処理を実行
For i = 5 To Cells(Rows.Count, 1).End(xlUp).Row
'現在のファイル名を取得
fo = Cells(i, 1).Value
'新しいファイル名を取得
fn = Cells(i, 2).Value
'新しいファイル名が入力されているときのみ処理を実行
If fn <> "" Then
'正常処理の実行結果を先に入力
Cells(i, 3).Value = _
"○ファイル名を" & _
"「" & fo & "」から" & _
"「" & fn & "」に変更しました。"
'ファイル名を変更
Name fp & fo As fp & fn
End If
Next i
Exit Sub
ERR_HANDL:
Cells(i, 3).Value = _
"×" & Err.Description & ":" & Err.Number
Resume Next
先日、フォルダを指定してファイル名一覧を取得するマクロをご紹介しました。
上記のマクロは、そのファイル名一覧を作成するマクロで作られたファイル名一覧をベースにして、ファイル名を変更するものです。
A1セルにファイル名を変更したいフォルダのフルパスを、A5セル以下に現在のファイル名を(ここまでは先日のマクロでできます)、B5セル以下に新しいファイル名を入力しておいてください。
B列にファイル名の入力されているファイルに対してだけ処理が実行され、C5セル以下には実行結果が入力されます。
実際にファイル名を変更しているのはFor ~ Nextループ文の最後のほうにある
Name fp & fo As fp & fn
の部分です。
Nameステートメントの、Asの前で現在のファイル名を、Asの後ろで新しいファイル名を指定します。
変数「fp」には最初のほうの
fp = Range("A1").Value & "\"
でフルパスと円マークを格納して、
変数「fo」「fn」にはループ文の中で
fo = Cells(i, 1).Value
fn = Cells(i, 2).Value
セルから取得した値を格納しています。
ファイル名の変更操作では、いろいろなエラーが発生する可能性があります。
エラーハンドラ「ERR_HANDL」の中で、C列にErr.DescriptionとErr.Numberを書きだしています。
ファイル名をまとめて変更してしまうので、上記のマクロをご利用の際は、ご自身でよくテストをして、自己責任でお願いします。
- Newer:マクロについて頭が整理され良かった
- Older:文字を1ポイント大きくするPowerPointマクロ
Home » エクセルマクロ・Excel VBAの使い方 » マクロのサンプル » ファイル名をまとめて変更するExcelマクロ