今回はVBA使用時によくやる絶対パス,相対パスの書き方について、備忘録も兼ねて紹介したいと思います。
VBAに限らず、基本知識として持っておいて損はないと思います!
VBAを使えるようにする方法については以前紹介していますので、併せてご覧ください!
そもそも絶対パス・相対パスって何ぞや
「そもそも絶対パス・相対パスって何?」って方もいらっしゃると思うので、それぞれざっくり説明すると
- 絶対パス:全ての階層のパス
- 相対パス:今いる階層から見たパス
みたいな感じです。
絶対パスが住所で、相対パスが現在地から目的地までのルートみたいなものだと考えてもらえればOKです。
絶対パス・相対パスの書き方
それでは、絶対パス・相対パスの書き方を紹介します。
今回対象となるファイルは「D:\ExcelVBA」内の「ごはん」フォルダに格納されている「献立.xlsx」とします。
絶対パスの書き方
絶対パスで記述する場合、「D:\ExcelVBA\ごはん\献立.xlsx」が絶対パスになります。
VBAで使う場合、定数(あらかじめ決められた変数)として定義しておくとよいと思います。
Private Const c_絶対パス As String = "D:\ExcelVBA\ごはん\献立.xlsx"
相対パスの書き方
相対パスで記述する場合、基準になるファイル・フォルダが必要になります。
今回は基準になるファイルを「VBATest.xlsm」とします。このファイルがある階層(今回だと「D:\ExcelVBA」)から相対パスを記述していきます。
今開いているファイルのパスを取得するには、「ThisWorkbook.Path」を使用します。
Dim targetPath As String
targetPath = ThisWorkbook.Path & "\ごはん\献立.xlsx" 'D:\ExcelVBA\ごはん\献立.xlsx
ThisWorkbook.Pathはこのマクロを動かしているファイルのパスを取得することが出来ます。今回の場合だとThisWorkbook.Pathは「D:\ExcelVBA」になります。
その為、今回はDドライブにExcelVBAフォルダを置いていますが、ThisWorkbook.Pathを使えばドキュメントフォルダに置こうがCドライブに置こうが自動でパスを取得してくれるわけです。
因みに、マクロを動かしているファイル名も含めたパスを取得したい場合、「ThisWorkbook.FullName」を使用すると取得することが出来ますので、こちらも併せて覚えておきましょう!
Dim targetPath As String
targetPath = ThisWorkbook.FullName 'D:\ExcelVBA\VBATest.xlsm
まとめ
今回はVBA使用時によくやる絶対パス,相対パスの書き方について紹介しました。
かなりざっくりした紹介にはなっていますが、VBA以外でも活きる内容になるので是非覚えておきましょう!
また、ThisWorkbook.PathやThisWorkbook.FullNameは使う機会が多いと思いますので、是非活用していただければと思います!
VBAに関する投稿を随時更新していますので、是非参考にしていただければと思います!
コメント