Home » エクセルマクロ・Excel VBAの使い方 » Workbooks・Workbook » Workbooksの引数にフルパスを指定したい?

Workbooksの引数にフルパスを指定したい?

対象:Excel2010, Excel2013, Windows版Excel2016

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プロパティや、

オブジェクトブラウザー:Workbooks._Defaultプロパティ

_Defaultと同じ挙動をするItemプロパティに、フルパスを指定することはできません。

オブジェクトブラウザー:Workbooks.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メソッドを使います。

『いちばんやさしいのExcel VBAの教本』 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の引数にフルパスを指定したい?

「Workbooks・Workbook」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.