フルパスからファイル名のみを取得する
フルパスからファイル名を取得するには、Dir 関数 が便利です。ただし、対象となるファイルが存在しない場合は、取得することができません。
その場合は、まず、InStrRev 関数 を使ってフルパスの最後の「\」の位置を取得します。最後の「\」の後が、ファイル名となるので、Mid 関数 を使って取得します。
フルパスからパス名のみを取得する
ファイル名がわかれば、Replace 関数 を使ってフルパスからファイル名を削除して取得することができます。
FSO を使用してフルパスからパス・ファイル名を取得する
FSO(FileSystemObject) を使用して、フルパスからパス、ファイル名を取得することができます。パスを取得するには、GetParentFolderName メソッド を使用します。ファイル名を取得するには、GetFileName メソッド を使用します。
FSO に関しては、ファイルシステムオブジェクトの使い方 を参照してください。
ConvertFormula メソッド 使用例
サンプルVBAソース 1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
Sub Sample1_GetFileName() Dim TargetFilePathName As String Dim FileName As String Dim FilePath As String TargetFilePathName = "C:\MyDocuments\Sample.txt" If Dir(TargetFilePathName) <> "" Then 'ファイルが存在する場合 FileName = Dir(TargetFilePathName) Else 'ファイルが存在しない場合 FileName = Mid(TargetFilePathName, InStrRev(TargetFilePathName, "\") + 1) End If FilePath = Replace(TargetFilePathName, FileName, "") MsgBox "パス:" & FilePath & vbCrLf & "ファイル名:" & FileName End Sub |
実行結果 1
サンプルVBAソース 2(FSO 使用)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
Sub Sample2_GetFileName() 'FileSystemObject オブジェクトを使用する方法 Dim myFSO As Object Dim TargetFilePathName As String Dim FileName As String Dim FilePath As String TargetFilePathName = "C:\MyDocuments\Sample.txt" Set myFSO = CreateObject("Scripting.FileSystemObject") FileName = myFSO.GetFileName(TargetFilePathName) FilePath = myFSO.GetParentFolderName(TargetFilePathName) MsgBox "パス:" & FilePath & vbCrLf & "ファイル名:" & FileName End Sub |