セルに記入されたフルパスからファイル名のみを取得したい場合がある。
よくあるやり方は、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()は実際にフォルダを検索するので、他のパソコンのパスに関しては使えないので気を付けよう。