Home » エクセルマクロ・Excel VBAの使い方 » 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:\temp\sample.xlsxが開かれている状態であっても、
  Workbooks("C:\temp\sample.xlsx")
といったコードの存在するプロシージャを実行すれば、
「実行時エラー'9' インデックスが有効範囲にありません。」
実行時エラーが発生します。

Workbooksコレクションの_DefaultプロパティやItemプロパティに指定できるのは、ブック名かインデックス番号です。
ブック名を指定する場合、
  Workbooks("sample.xlsx")
  Workbooks("sample")
ならOKです。

既存のブックを開くのはWorkbooks.Openメソッド

上述のように、フルパスを引数に指定したかった理由はいくつか考えられますが、フルパスを指定することでブックを開けると思っていたのならば、それは違います。

VBAから既存のブックを開きたい場合は、拙著『いちばんやさしいExcel VBAの教本』のLesson 75「Workbooks、Workbookのプロパティ・メソッドについて学習しましょう」でもお伝えしているとおり、Workbooksコレクションに用意されているOpenメソッドを使います。

オブジェクトブラウザー:Workbooks.Openメソッド

Workbooks.Openメソッドにはたくさんの引数を指定できますが、第1引数にフルパスを指定して、
  Workbooks.Open "C:\temp\sample.xlsx"
とすれば、C\tempフォルダーに存在する、sample.xlsxブックを開くことができます。

最終更新日時:2018-10-17 09:37

[スポンサードリンク]

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

TrackBack:0

TrackBack URL
[スポンサードリンク]

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

「Workbookオブジェクト」の記事一覧

検索


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

.