【VBA】BuildPathメソッドで二つのパスを連結する方法
更新日:2024/01/18
フォルダのパスにフォルダ名やファイル名のパスを連結するとき、VBAではBuildPathメソッドを使用すると便利です。
今回はBuildPathメソッドについてお伝えします。
BuildPathの構文
BuildPathはFileSystemObjectオブジェクトのメソッドです。
二つの文字列引数を受け取り、文字列を返します。
FileSystemObjectオブジェクト.BuildPath(Path As String, Name As String) As String
- Path:元となるパス
- Name:連結するフォルダやファイル名
Pathは存在するかどうかをチェックされません。
二つの文字列間が一つの区切り文字(\)になるように調整されます。
".." 等を含んだ相対パスも、そのまま連結されます。
相対パスを絶対パスに変換するときは、相対パスを含んだパスの連結を参考にしてください。
BuildPathの使用例
BuildPathの使用例です。
Sub buildPathTest()
Dim fso As New Scripting.FileSystemObject
With fso
Debug.Print .BuildPath("c:\abc\def", "efg")
Debug.Print .BuildPath("c:\abc\def\", "\efg")
Debug.Print .BuildPath("c:\abc\def\", "\..\efg")
Debug.Print .BuildPath("c:\abc\def\", "d:\efg")
End With
End Sub
実行すると、次のような結果がイミディエイトウィンドウに表示されます。
c:\abc\def\efg c:\abc\def\efg c:\abc\def\..\efg c:\abc\def\d:\efg
\で連結するように調整されています。
しかし、".." やドライブ文字が含まれていても、そのまま連結されています。
相対パスを含んだパスの連結
".."または"."を含んだパスを連結して絶対パスを取得するときは、BuildPathで連結後にGetAbsolutePathNameを適用します。
次のコードは、カレントフォルダの親フォルダを取得しています。
Sub buildPathTest2()
Dim fso As New Scripting.FileSystemObject
Debug.Print "【カレントフォルダ】" & CurDir
Debug.Print "【親フォルダ】" & fso.GetAbsolutePathName(fso.BuildPath(CurDir, ".."))
End Sub
実行すると、次のような結果がイミディエイトウィンドウに表示されます。
【カレントフォルダ】C:\Users\xxx\Documents 【親フォルダ】C:\Users\xxx
更新日:2024/01/18
関連記事
スポンサーリンク
記事の内容について
こんにちはけーちゃんです。
説明するのって難しいですね。
「なんか言ってることおかしくない?」
たぶん、こんなご意見あると思います。
裏付けを取りながら記事を作成していますが、僕の勘違いだったり、そもそも情報源の内容が間違えていたりで、正確でないことが多いと思います。
そんなときは、ご意見もらえたら嬉しいです。
掲載コードについては事前に動作確認をしていますが、貼り付け後に体裁を整えるなどをした結果動作しないものになっていることがあります。
生暖かい視線でスルーするか、ご指摘ください。
ご意見、ご指摘はこちら。
https://note.affi-sapo-sv.com/info.php
このサイトは、リンクフリーです。大歓迎です。