Excel VBAでは
Workbooks(Index)
といったコードで、ブックを表すWorkbookオブジェクトを取得できます。
例えば、sample.xlsxブックが開かれていれば、
Workbooks("sample.xlsx")
というコードで、sample.xlsxブックを表すWorkbookオブジェクトを取得できます。
このことを知った方から
「Workbooksの引数にファイルのパスは指定できないのでしょうか?」
といったご質問をいただくことがあります。
具体的には、
Workbooks("C:\temp\sample.xlsx")
のような指定ができないのか、というご質問です。
このサイト『インストラクターのネタ帳』へ、
「vba Workbooks フルパス」
といった検索キーワードでのアクセスもあります。
この検索をなさった方も、同じことを調べていたのかもしれません。
Workbooksの_DefaultやItemにフルパスは指定できない
Workbooksコレクションの、既定メンバーである_Defaultプロパティや、
_Defaultと同じ挙動をするItemプロパティに、フルパスを指定することはできません。
仮に、C:\tmp\samp.xlsxが開かれている状態であっても、
Workbooks("C:\tmp\samp.xlsx")
といったコードの存在するプロシージャを実行すれば、
「実行時エラー'9' インデックスが有効範囲にありません。」
実行時エラーが発生します。
Workbooksコレクションの_DefaultプロパティやItemプロパティに指定できるのは、ブック名かインデックス番号です。フルパスは指定できません。
既存のブックを開くのはWorkbooks.Openメソッド
上述のように、フルパスを引数に指定したかった理由はいくつか考えられますが、フルパスを指定することでブックを開けると思っていたのならば、それは違います。
VBAから既存のブックを開きたい場合は、拙著『いちばんやさしいExcel VBAの教本』のLesson 75「Workbooks、Workbookのプロパティ・メソッドについて学習しましょう」でもお伝えしているとおり、Workbooksコレクションに用意されているOpenメソッドを使います。
Workbooks.Openメソッドにはたくさんの引数を指定でき、第1引数にフルパスを指定して、
Workbooks.Open "C:\tmp\samp.xlsx"
とすれば、C\tmpフォルダーに存在する、samp.xlsxブックを開くことができます。
最終更新日時:2019-10-29 04:33
Home » エクセルマクロ・Excel VBAの使い方 » Workbooks・Workbook » Workbooksの引数にフルパスを指定したい?