更新日:、 作成日:
VBA ファイル名の取得または変更する
はじめに
Excel VBA マクロでファイル名の取得または変更する方法を紹介します。
GetFileName, GetBaseName, GetExtensionName 関数などを使って、指定したパスのファイル名や拡張子を取得できます。
File.Name プロパティから名前や拡張子の変更ができます。
FileSystemObject について
ここでは VBA の標準の関数より便利な FileSystemObject を使った方法を紹介しています。基本的な使い方については「FileSystemObject ファイル操作の基礎」をご覧ください。
コードを見やすくするため FileSystemObject を参照設定しています。また、エラー処理は行っていません。
ファイルの取得または変更する
指定したファイルの名前を取得
Dim fso As FileSystemObject
Set fso = New FileSystemObject ' インスタンス化
Dim s As String
s = fso.GetFileName("D:\Tips.txt") ' ファイル名と拡張子
Debug.Print(s) ' Tips.txt
s = fso.GetBaseName("D:\Tips.txt") ' ファイル名のみ
Debug.Print(s) ' Tips
s = fso.GetExtensionName("D:\Tips.txt") ' 拡張子のみ
Debug.Print(s) ' txt
' 後始末
Set fso = Nothing
fso.GetFileName 関数で拡張子を含むファイル名を取得できます。フォルダを指定したときはフォルダ名を取得します。
fso.GetBaseName 関数でファイル名のみを取得できます。フォルダを指定したときはフォルダ名を取得します。
fso.GetExtensionName 関数で拡張子のみを取得できます。
いずれの関数も存在しないファイルやフォルダに対して使用できます。
ファイル名の取得または変更
Dim fso As FileSystemObject
Set fso = New FileSystemObject
Dim f As File
Set f = fso.GetFile("D:\Tips.txt") ' ファイルの取得
Dim s As String
s = f.Name ' ファイル名の取得 (Tips.txt)
f.Name = "Tips変更.txt" ' ファイル名の変更
' 後始末
Set fso = Nothing
fso.GetFile 関数で指定したパスの File オブジェクトを取得します。ファイルが存在しないときはエラーが発生します。
f.Name プロパティから、拡張子を含むファイル名を取得または変更できます。既に存在しているファイル名に変更するとエラーが発生します。
s = fso.GetBaseName(f.Path) ' ファイル名のみ
s = fso.GetExtensionName(f.Path) ' 拡張子のみ
ファイル名や拡張子を取得したいときは f.Path プロパティで、そのファイルのパスを取得できます。
拡張子の変更
Dim fso As FileSystemObject
Set fso = New FileSystemObject
Dim filePath As String
filePath = "D:\Tips.txt" ' 変更するファイルのパス
Dim extension As String
extension = ".ini" ' 新しい拡張子
Dim f As File
Set f = fso.GetFile(filePath) ' ファイルの取得
f.Name = fso.GetBaseName(f.Path) & extension ' 拡張子を変更
Debug.Print(f.Name) ' Tips.ini
' 後始末
Set fso = Nothing
fso.GetFile 関数で指定したパスの File オブジェクトを取得します。ファイルが存在しないときはエラーが発生します。
fso.GetBaseName 関数でファイル名のみを取得し、それに新しい拡張子を結合したものを f.Name プロパティに設定して拡張子を変更できます。
フォルダ内のファイル名の取得または変更
Dim fso As FileSystemObject
Set fso = New FileSystemObject
Dim fl As Folder
Set fl = fso.GetFolder("D:\") ' フォルダを取得
Dim fileName As String
Dim f As File
For Each f In fl.Files ' フォルダ内のファイルを取得
fileName = f.Name ' ファイル名の取得 (Tips.txt)
If fileName = "Tips.txt" Then ' ファイル名を変更したいファイル
f.Name = "Tips変更.txt" ' ファイル名の変更
End If
Next
' 後始末
Set fso = Nothing
fso.GetFolder 関数で指定したパスの Folder オブジェクトを取得します。フォルダが存在しないときはエラーが発生します。
fl.Files プロパティから、そのフォルダの File オブジェクトの一覧を取得できます。
f.Name プロパティから、拡張子を含むファイル名を取得または変更できます。
スポンサーリンク