VBA ファイルパスからファイル名と拡張子のみを取得する

VBA ファイルパスからファイル名と拡張子のみを取得する

VBAで、ファイルパスからファイル名と拡張子のみを取得するコードを記述してます。

環境

  • OS windows10 64bit

ファイル名と拡張子のみを取得

ファイル名と拡張子のみを取得するには、「Scripting.FileSystemObject」を使用します。

適当なボタンを用意して、パス「C:\hoge\test.xlsx」から「test.xlsx」だけを取得して表示する
以下のソースコードを記述します。

Private Sub CommandButton1_Click()

    Dim objFSO As Object
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Dim strFileName As String
    
    strFileName = "C:\hoge\test.xlsx"
    
    Cells(2, 2).Value = objFSO.GetFileName(strFileName)
    
End Sub

実行してみます。

取得されていることが確認できます。

「Scripting.FileSystemObject」を使用しないで、以下のようにしても取得可能です。

Cells(2, 2).Value = Right(strFileName, Len(strFileName) - InStrRev(strFileName, "\"))

その他取得

「Scripting.FileSystemObject」を使用すれば、ファイル名のみや拡張子のみといった情報も取得可能です。

Private Sub CommandButton1_Click()

    Dim objFSO As Object
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Dim strFileName As String
    
    strFileName = "C:\hoge\test.xlsx"
    
    ' ファイル名 + 拡張子 test.xlsx
    Cells(2, 2).Value = objFSO.GetFileName(strFileName)

    ' パスのみ C:\hoge
    Cells(3, 2).Value = objFSO.GetParentFolderName(strFileName)

    ' ファイル名 test
    Cells(4, 2).Value = objFSO.GetBaseName(strFileName)

    ' 拡張子 xlsx
    Cells(5, 2).Value = objFSO.GetExtensionName(strFileName)
    
End Sub

実行結果