mugaxのなんでも情報局

いろんな分野について発信していきます。

Excel VBAでフルパスからファイル名を取得する方法

セルに記入されたフルパスからファイル名のみを取得したい場合がある。

よくあるやり方は、InStrRev()とMid()を使う方法だ。

Function GetFileName(tgtPath As String) As String

    Dim pos As Long

    pos = InStrRev(tgtPath, "\")
    GetFileName = Mid(tgtPath, pos + 1, Len(tgtPath) - pos)

End Function

もうひとつのやり方は、Split()で配列にして最終要素を取得する方法だ。

Function GetFileName2(tgtPath As String) As String

    Dim arr() As String

    arr = Split(tgtPath, "\")
    GetFileName2 = arr(UBound(arr))

End Function

個人的には後者の方が好みである。わかりやすいからだ。

Split()を使えばフォルダ名を取得するのも簡単だ。

是非とも、覚えておこう。

ちなみに、「VBA ファイル名取得」でネットを検索するとDir()を使う方法が紹介されていることがある。しかし、Dir()は実際にフォルダを検索するので、他のパソコンのパスに関しては使えないので気を付けよう。