- 「あぁ、また100個のファイル名に今日の日付を入れなきゃ……」
- 「フォルダ名がバラバラで管理しにくい、一気に変えられたらいいのに」
デスクワークにおいて、こうした「単純だけどボリュームのある作業」に時間を奪われるのは避けたいものです。
Excel VBAを活用すれば、500個のファイル名変更もわずか数秒で完了します。今回は、初心者の方でも今日から実践できる2つのアプローチをご紹介します。
1. 簡潔に記述できる「Nameステートメント」
まずは、最もシンプルで簡単な「Nameステートメント」です。これは、ファイルに貼ってある「名前シール」をペロッと剥がして、新しいシールに貼り替えるようなイメージです。
- メリット:コードが非常に短くシンプル、事前の準備(参照設定など)が不要
- デメリット:対象ファイルが開いているとエラーが発生する、複雑なフォルダ操作には不向き
コピペで使えるサンプルコード
以下のコードは、デスクトップにある「old.xlsx」という名前を「new.xlsx」に変える例です。
Sub RenameFileSimple()
' Name 元のフルパス As 新しいフルパス
' ※フルパスとは、ファイルの「住所」のことです
On Error Resume Next ' エラーが発生しても処理を中断しないための記述
Name "C:\Users\YourName\Desktop\old.xlsx" As "C:\Users\YourName\Desktop\new.xlsx"
If Err.Number = 0 Then
MsgBox "名前を変更しました!"
Else
MsgBox "失敗しました。ファイルが開いていないか確認してください。"
End If
End Sub
2. 高機能で柔軟な「FileSystemObject(FSO)」
次は、より柔軟で高度な処理が可能な「FileSystemObject(通称:FSO)」です。
これは、ファイル管理の「有能な専任スタッフ」を雇うイメージです。スタッフに「このフォルダ内にあるすべてのファイル名に、今日の日付を追加して」と指示を出すだけで、正確かつ迅速に処理してくれます。
- メリット:「フォルダ内の全ファイルを一括変更する」といった複雑な処理が得意、処理前にファイルの存在確認ができるためエラーを防ぎやすい
- デメリット:コードの冒頭でオブジェクト(専任スタッフ)を生成・呼び出す記述が必要
コピペで使えるサンプルコード
こちらは、将来的に特定のフォルダ内にあるファイルを一括で操作したい場合にも応用しやすい記述例です。
Sub RenameWithFSO()
' ファイル操作の専門家(FSO)を呼び出します
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Dim targetFile As String
targetFile = "C:\Users\YourName\Desktop\test.txt"
' ファイルが存在するか確認する
If fso.FileExists(targetFile) Then
' ファイル名を取得して変更する
Dim fileObj As Object
Set fileObj = fso.GetFile(targetFile)
fileObj.Name = "完了_test.txt"
MsgBox "変更が完了しました!"
Else
MsgBox "ファイルが見つかりませんでした。"
End If
End Sub
まとめ:用途に合わせた使い分けのポイント
- 手軽に1〜2個のファイル名を変更したい場合:Nameステートメント
- 大量のファイルを一括処理し、エラーを確実に防ぎたい場合:FSO
まずは上記のコードを自分のPCのパス(住所)に書き換えて、動かしてみることから始めてみてください!
VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。
リンク
リンク

コメント