ファイルパスをパスとファイル名に分割
ファイルのフルパスを、フォルダパス部分とファイル名部分をそれぞれ取り出したい場合があります。
ファイル名部分だけを表示したい、などの場合ですね。
以下の関数は引数にファイルパスを渡すと、フォルダパス部分とファイル名を変数で返します。
引数のファイルパスをパス区切り文字である\文字で分割し、分割した最終文字列がファイル名となり、それ以外はフォルダパスになります。
ソースコード
引数1:(IN) ファイルパス
引数2:(OUT) フォルダパス
引数3:(OUT) ファイル
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
Private Sub DivPath(a_sFilePath, a_sPath, a_sFile) Dim v Dim i Dim iDivCount Dim sFilePath '// パス区切り文字を\で統一 sFilePath = Replace(a_sFilePath, "/", "\") '// \で分割(各パスを分割すると最終分割がファイル名になる) v = Split(a_sFilePath, "\") iDivCount = UBound(v) a_sPath = "" a_sFile = "" For i = 0 To iDivCount If (i < iDivCount) Then a_sPath = a_sPath & v(i) & "\" Else a_sFile = v(i) End If Next End Sub |
使い方
例としてCドライブのtestフォルダにabc.txtというファイルがあった場合の使い方です。
1番目の引数にファイルパスを渡し、2番目と3番目の引数にフォルダパス、ファイルをそれぞれ渡しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Sub DivPathTest() Dim sFilePath Dim sPath Dim sFile sFilePath = "C:\test\abc.txt" Call DivPath(sFilePath, sPath, sFile) Debug.Print "元:" & sFilePath Debug.Print "フォルダ:" & sPath Debug.Print "ファイル:" & sFile End Sub |
実行結果
元:C:\test\abc.txt
フォルダ:C:\test\
ファイル:abc.txt