VBAでファイルのパスからファイル名を抜き出す方法についてご説明します。
ファイルを操作していると、パスはわかるけどファイル名を抜き出したくなることがあります。
そんな時に便利な方法です。
その他のファイルの操作については下記記事をご覧ください。
1.ファイルのパスからファイル名を抜き出す方法
ファイルのパスからファイル名を抜き出す方法です。
後ろから「¥」を検索して最初に見つかった位置より後ろを抜き出すなどの方法もありますが、
フルパスからファイル名を抜き出すには、「Dir関数」を使用する方法が簡単です。
Dir関数は、ファイルが存在する場合は指定したパスからファイル名を返します。
ファイルが存在しない場合は空文字列を返します。
その特徴を生かしてDir関数にフルパスを指定するだけでファイル名を取得可能です。
Dir関数を使用したファイル操作の記事を結構掲載していますが、とても便利な関数です。
Dir関数
簡単にですがDir関数について説明したいと思います。
指定したファイルまたはフォルダの名前を返えす関数です。
「*」といったワイルドカードを使用する事が出来ます。
構文は次のように記述します。
Dir[(PathName[,Attributes])]
「PathName」は省略可能で、ファイル名やフォルダ名を表す文字列を指定します。
引数「Attributes」も省略で、取得するファイルの属性を表す数式もしくは定数を指定します。
指定したファイルが存在した場合はそのファイル名を返し、存在しない場合は空文字列を返します。
引数「Attributes」を省略した場合、直前に指定したファイル名且つ、検索にかかっていないファイル名が返されます。
2.ファイルのパスからファイル名を抜き出すコード
それでは指定したファイルのパスからファイル名を抜き出すコードです。
非常に簡単です。
ファイルが存在しない場合も考えて、一工夫したコードにしてみました。
Cドライブ直下にSampleというフォルダを作成し、その中に「Test01.xlsx」というファイルを用意しました。
Sub Sample1()
Dim FileName As String
FileName = "C:\Sample\Test01.xlsx"
If Dir(FileName) <> "" Then
MsgBox Dir(FileName)
Else
MsgBox "ファイルは存在しません。"
End If
End Sub
コードの説明
「FileName = “C:\Sample\Test01.xlsx”」でファイル名を取得したいパスを指定します。
「If Dir(FileName) <> “” Then」で指定したファイルが存在するか判定しています。
Dir関数はファイルが存在しない場合は空文字列を返すため、この様に簡単に判定できます。
「MsgBox Dir(FileName)」でファイルが存在した場合はメッセージボックスに表示しています。
存在しないファイルを指定した場合
上記のコードでファイルが存在しないパスを指定した場合の結果です。
分岐しなくてもエラーになることはありませんが、下図のようにメッセージボックスが表示されました。