VBAでファイル名を変更する方法として、FileSystemObjectのGetFolderを使用することで実現できます。
FileSystemObjectは、ファイルシステムオブジェクトを操作するための標準ライブラリであり、ファイルやフォルダの作成や削除、コピー、移動などを簡単に行うことができます。
GetFolderメソッドは、指定したフォルダのフォルダオブジェクトを取得します。
取得したフォルダオブジェクトを利用すれば、フォルダに存在するファイルの情報にアクセスすることができます。
ここでは、FileSystemObjectのGetFolderを使ってVBAでファイル名を変更する方法について説明します。
もくじ
【サンプルソース】フォルダに存在するファイルの名前を変更
以下は、FileSystemObjectのGetFolderを使用してVBAでフォルダに存在するファイルの名前を変更するサンプルソースです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
Sub RenameFilesInFolder() Dim fso As Object Dim folderPath As String Dim targetFolder As Object Dim file As Object 'フォルダのパスを指定 folderPath = "D:\200_work\100_sample\AAA" ' FileSystemObjectを生成 Set fso = CreateObject("Scripting.FileSystemObject") ' フォルダオブジェクトの取得 Set targetFolder = fso.GetFolder(folderPath) 'フォルダに存在するファイルの名前を変更 For Each file In targetFolder.files file.Name = Replace(file.Name, "A", "B") Next Set targetFolder = Nothing Set fso = Nothing MsgBox "ファイル名を変更しました。" End Sub |
上記のサンプルソースでは、以下の流れでファイル名を変更しています。
- FileSystemObjectを生成する
- GetFolderメソッドで対象のフォルダオブジェクトを取得する
- 取得したフォルダオブジェクトを利用して、フォルダ内のファイル情報を取得する
- ファイルオブジェクトのNameプロパティでファイル名を変更する
具体的には、ファイル名の”A”を”B”に変更しています。
例えば、A001.txtならB001.txtにファイル名を変更します。
注意点としては、指定したフォルダが存在しない場合、エラーが発生します。
存在するフォルダパスを指定してください。
【サンプルソース】条件に該当するファイルのみ名前を変更
以下は、フォルダに存在するファイルのうち、条件に該当するファイルのみファイル名を変更するサンプルソースです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
Sub RenameTxtFile() Dim fso As Object Dim folderPath As String Dim targetFolder As Object Dim file As Object 'フォルダのパスを指定 folderPath = "D:\200_work\100_sample\AAA" ' FileSystemObjectを生成 Set fso = CreateObject("Scripting.FileSystemObject") ' フォルダオブジェクトの取得 Set targetFolder = fso.GetFolder(folderPath) 'フォルダに存在するテキストファイルの名前を変更 For Each file In targetFolder.files If LCase(Right(file.Name, 4)) = ".txt" Then file.Name = Replace(file.Name, "A", "B") End If Next Set targetFolder = Nothing Set fso = Nothing MsgBox "ファイル名を変更しました。" End Sub |
上記のサンプルソースでは、以下の流れでファイル名を変更しています。
- FileSystemObjectを生成する
- GetFolderメソッドで対象のフォルダオブジェクトを取得する
- 取得したフォルダオブジェクトを利用して、フォルダ内のファイル情報を取得する
- 条件に該当するファイルのみファイル名を変更する
条件として、拡張子が「.txt」のファイルのみとしています。
ファイル名の右から4文字を取得し、LCaseを利用して小文字化します。
その値が「.txt」と同じファイルのみ対象として、ファイル名を変更しています。
具体的には、テキストファイルのみファイル名の”A”を”B”に変更しています。
例えば、拡張子が「.xls」や「.xlsx」のファイルが存在していても、ファイル名は変更されません。
この条件を変更すれば、お好きなファイルのみを対象にファイル名を変更することができます。
例えば、”A”から始まるファイルなら、条件をLeft(file.Name,1) = “A”と変更すれば良いです。
まとめ
VBAでフォルダに存在するファイルを対象に、ファイル名を変更する方法を紹介しました。
大量にファイルが存在する場合、手作業でファイル名を変更するのは大変です。
VBAをうまく利用して楽をしましょう。
また、一度作ってしまえば、何度も利用できるので便利です。
いろいろ試してみてください。
以上です。
最後まで読んでいただきありがとうございました。
この記事をシェアしていただけると喜びます。