「フォルダ内にある複数のレポートファイル名に、一括で今日の日付を付け加えたい」といった、ファイル名の一括変更は、ファイル整理作業で頻繁に発生します。
FileSystemObject (FSO)を使えば、ファイルやフォルダの名前をVBAで簡単に変更できます。この記事では、FileオブジェクトやFolderオブジェクトの.Nameプロパティを使い、名前を変更する基本的な方法と、その際の注意点を解説します。
【準備】参照設定
FSOを快適に利用するため、VBAエディタでツール > 参照設定を開き、**「Microsoft Scripting Runtime」**にチェックを入れておくことを推奨します。
1. フォルダ内の全ファイル名を一括で変更する
まず、指定したフォルダ内にある全てのファイル名に、日付を追加する実用的なコードです。
完成したVBAコード
'参照設定: Microsoft Scripting Runtime
Sub RenameAllFilesInFolder()
' 変数を宣言します
Dim fso As New FileSystemObject
Dim targetFolder As Folder
Dim fileObj As File
Dim folderPath As String
'--- 名前を変更したいファイルが入っているフォルダのパス ---
folderPath = ThisWorkbook.Path & "\Reports\"
' フォルダが存在しない場合は処理を中断
If Not fso.FolderExists(folderPath) Then
MsgBox "対象フォルダが見つかりません。", vbCritical
Exit Sub
End If
'--- 1. 対象フォルダのオブジェクトを取得 ---
Set targetFolder = fso.GetFolder(folderPath)
'--- 2. フォルダ内の全ファイルをループ処理 ---
For Each fileObj In targetFolder.Files
'--- 3. 新しいファイル名を組み立てて、.Nameプロパティに代入 ---
fileObj.Name = fso.GetBaseName(fileObj.Path) & "_" & Format(Date, "yyyymmdd") & "." & fso.GetExtensionName(fileObj.Path)
Next fileObj
MsgBox "フォルダ内の全ファイル名の変更が完了しました。"
' オブジェクトを解放
Set fileObj = Nothing
Set targetFolder = Nothing
Set fso = Nothing
End Sub
2. フォルダ名を変更する
ファイルだけでなく、フォルダ自体の名前も同じように変更できます。
完成したVBAコード
Sub RenameSingleFolder()
Dim fso As New FileSystemObject
Dim folderObj As Folder
Dim originalFolderPath As String
originalFolderPath = ThisWorkbook.Path & "\OldFolderName"
If fso.FolderExists(originalFolderPath) Then
Set folderObj = fso.GetFolder(originalFolderPath)
' .Nameプロパティに新しい名前を代入するだけ
folderObj.Name = "NewFolderName"
MsgBox "フォルダ名を変更しました。"
Else
MsgBox "対象フォルダが見つかりません。"
End If
End Sub
コードのポイント解説
.Name プロパティへの代入
FSOでファイルやフォルダの名前を変更する核心は、非常にシンプルです。 対象オブジェクト.Name = "新しい名前"
FileオブジェクトやFolderオブジェクトの.Nameプロパティは読み取りだけでなく、書き込みも可能です。このプロパティに新しい名前の文字列を代入するだけで、実際のファイル名・フォルダ名が変更されます。
新しいファイル名の組み立て
fileObj.Name = fso.GetBaseName(fileObj.Path) & "_" & ... & "." & fso.GetExtensionName(fileObj.Path)
ファイル名に日付などを追加する際、元のファイル名から拡張子を分離する必要があります。FSOの.GetBaseName(拡張子なしのファイル名を取得)と.GetExtensionName(拡張子のみを取得)メソッドを使うと、この処理を確実に行えます。
【重要】名前変更時の注意点
ファイル名・フォルダ名の変更は、以下の条件で実行時エラーとなります。
- ファイルが開かれている: 名前を変更しようとしているファイルが、Excelやその他のアプリケーションで開かれている場合、「Permission denied (アクセスが拒否されました)」エラーが発生します。
- 名前の重複: 変更しようとしている新しい名前が、同じフォルダ内に既に存在している場合、エラーが発生します。事前に
fso.FileExistsでチェックするのが安全です。 - 不正な文字: ファイル名として使えない文字(
¥ / : * ? " < > |)を新しい名前に含めると、エラーになります。
まとめ
FSOを使った名前の変更は、.Nameプロパティを理解すれば非常に簡単です。
fso.GetFileまたはfso.GetFolderで、名前を変更したい対象のオブジェクトを取得する。- そのオブジェクトの**
.Nameプロパティに、新しい名前の文字列を代入**する。
フォルダ内のファイルを一括でリネームする処理は、ファイル整理などで非常に役立ちます。エラー条件にだけ注意して、ぜひ活用してみてください。
副業から独立まで「稼げる」Webスキルを習得する(PR)
ここまで読んでいただきありがとうございます。 最後に宣伝をさせてください。
「副業を始めたいが、何から手をつければいいかわからない」「独学でスキルはついたが、収益化できていない」という悩みを持つ方には、マンツーマン指導のWebスクール**「メイカラ」**が適しています。
このスクールは、単に技術を教えるだけでなく、**「副業として具体的にどう稼ぐか」**という実務直結のノウハウ提供に特化している点が特徴です。
講師陣は、実際に「副業Webライターから1年で独立して月収100万円」を達成したプロや、現役で利益を出し続けているブロガーなど、確かな実績を持つプレイヤーのみで構成されています。そのため、机上の空論ではない、現場で通用する戦術を学ぶことができます。
副業に特化した強み
- 最短ルートの提示: 未経験からでも実績を出せるよう、マンツーマンで指導。
- AI活用の習得: 副業の時間対効果を最大化するための、正しいAI活用スキルも網羅。
- 案件獲得のチャンス: 運営がWebマーケティング会社であるため、実力次第で社内案件の紹介など、仕事に直結する可能性があります。
受講者の多くは、「在宅でできる仕事を探している」「副業を頑張りたい」という20代・30代・40代が中心です。
受講前には、講師による無料説明が行われます。無理な勧誘はなく、自分に合った副業スタイルやプランを相談できるため、まずは話を聞いてみることから始めてみてはいかがでしょうか。
