実行中のフォルダを取得する

マクロを実行して、フォルダやファイルを指定する場合には、ダイアログを表示して選択するようにします。この場合は「FileDialog」を使います。
しかし、そのマクロが書かれたファイルと同じフォルダ内のファイルを指定する場合は、ダイアログで一々選択するのは面倒です。

さて、ヘルプには「CurDir」を使えば「現在のフォルダ」が取得できると書かれています。
ところで「現在のフォルダ」とは何でしょうか。人によっては実行している「現在実行中のマクロが書かれているファイルがあるフォルダ」と考えるかもしれませんが、違います。
「現在のフォルダ」とは「ファイルを開く」ダイアログに最初に表示されるフォルダです。
つまりExcelを使っている間に変わってしまうのです。

ここで使えるのが「ThisWorkbook」です。
「ThisWorkbook」は「現在実行中のマクロコードが記述されているブック」を表します。
次のように使います。

コード 内容
ThisWorkbook.Path パス D:\Data
ThisWorkBook.Name ファイル名 テスト.xls
ThisWorkBook.FullName フルパス(ファイル名まで) D:\Data\テスト.xls

コード例は次の通りです。

mydir = ThisWorkbook.Path
mypath = mydir & "¥サンプル.txt"
Open mypath For Input As #1

コメント

タイトルとURLをコピーしました