
No.1ベストアンサー
- 回答日時:
こんにちは。
> ブックを開くコマンド
> × Workbooks("filename.xls").open
> ○ Workbooks.open filename:="filename.xls"
> 何故下なのですか?
> ワークブックコレクションの中から特定のブックを指定し開くなら、
> 上の構文にした方がワークシートコレクション等と構文表現を統一出来ます。
> 現にブックを閉じるコマンドは
> Workbooks("filename.xls").close
> です。何故ブックを開くコマンドだけ別表現なのですか?
<以上、改行は筆者。>
まず、ヘルプの引用ですが、
その前に、Parentを省略せずに書くと、
Excel.Application.Workbooks.Open Filename:="filename.xls"
だという点を確認しておいてください。
|Application.Workbooks プロパティ
|開かれているすべてのブックを表す Workbooks コレクションを返します。値の取得のみ可能です。
<以上、VBAのヘルプより。>
一般論として、コレクションというのは、実体を持ったオブジェクトの集合体です。
"filename.xls"はWorkbookの設計図を収めたファイルとしてのみ存在している訳ですから、
開いてこそ実体を持ったWorkbook オブジェクトとなり得ます。
つまりブックとして開くまではWorkbooks コレクションに加えることは出来ません。
また、
開いていないブック=Workbooks コレクションに存在しないブック
を、Workbooks("filename.xls"). ...のように参照しようとしても当然実行時エラーになります。
Worksheets("sheetname"). ...のように存在しないワークシートを参照しようとしても同様です。
> 上の構文にした方がワークシートコレクション等と構文表現を統一出来ます。< 再掲
違いは、ブックを開いた時に連動して配下のシートは実体を持つ、ということです。
Worksheets には.Open メソッドはあり得ませんし、.Close メソッドもないですよね。
解り難い説明になってしまっていたらすみません。
結構な長文を用意したのですが、クドクなったので要約を上げました。
以上です。
ありがとうございます。
まだ開いて無いファイルだからコレクションには入ってないという事ですね。
だからこそworksheetにはないopenやcloseメソッドがあると。
No.3
- 回答日時:
#1、cjです。
お礼欄拝見しました。> まだ開いて無いファイルだからコレクションには入ってないという事ですね。
はい、その認識で合っています。
一般的なコレクション(コレクションオブジェクト)の扱いとしては、
一段階めで、新しいオブジェクトのインスタンス(実体)を生成してから
次の段階で
collection.Add Key:="name", Item:=newobject
のような書式でコレクションに追加します。
Workbooks.Open Filename:="filename.xls"
の場合は、オブジェクトの実体を生成すると同時に、
コレクションへの追加をしています。
> だからこそworksheetにはないopenやcloseメソッドがあると。
誤解のないように補足しておきますが、
Workbooks.Open Filename:="filename.xls"
これは、Workbooks コレクションのOpen メソッドです。
Workbooks("filename.xls").Close
これは、Workbook オブジェクトのClose メソッドです。
(Workbooks コレクションには、すべてのブックを閉じるClose メソッドがありますが、
これは、現在ではほぼ使われることのないもの、いわばレガシーです。)
Workbooks("filename.xls")
は、
Workbooks.Item("filename.xls")
の省略形ですが、
例外なくWorkbook オブジェクトを参照します。
「Workbooks」だけならWorkbooks コレクション、
「Workbooks()」と括弧が付いた部分を含めて、それは
(Workbooks コレクションのItemとしての)Workbook オブジェクトであって、
必然的に、Workbooks コレクションのメソッドは使用できません。
Open メソッド、と、Close メソッドとでは、処理対象(Parent)が別物なのです。
以上、補足として追記しておきます。
再回答ありがとうございます。
括弧ツキとなしではオブジェクトかコレクションかの違いがあるのですね。実は頭の中で不鮮明な理解だった部分です。スッキリしました。
No.2
- 回答日時:
> × Workbooks("filename.xls").open
Workbooksコレクションオブジェクトは「現在このExcelアプリケーションの中で開かれているブックたち」が入っている。
で、filename.xlsはまだ開かれていない。今から開くんだから。
だから、Workbooks("filename.xls")ではアクセスできない。
なので、
> ○ Workbooks.open filename:="filename.xls"
で開く。そこではじめてWorkbooksコレクションに追加されるわけだ。
開かれたので
> Workbooks("filename.xls").close
でアクセスでき、閉じる事もできる。開かれているからだ。
シートではWorksheets("newsheet1").Addみたいなのが使えるの?
Set sht = Worksheets.Add
sht.Name = "newsheet1"
みたいにするのしか知らない・・・・。
ありがとうございます。
最後の部分、まだ作成されてないシートなのでコレクションに入ってない為、この表現は使えない、でいいですよね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ワイルドカード「*」を使うとうまくいかないマクロの添削をお願いします 3 2022/03/26 09:39
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Visual Basic(VBA) VBAの参照先のファイル名をセルに書いて代入したい 2 2022/04/04 13:42
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/01/26 12:00
- Visual Basic(VBA) マクロVBA 1シートをまとめる 閉じ方 初心者 SOS! 1 2022/06/17 14:54
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/02/21 11:19
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
-
大麻の使用罪がなかった理由や法改正での変更点、他国との違いを弁護士が解説
ドイツで2024年4月に大麻が合法化され、その2ヶ月後にサッカーEURO2024が行われた。その際、ドイツ警察は大会運営における治安維持の一つの方針として「アルコールを飲んでいるグループと、大麻を吸っているグループ...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBA 画像を貼り付ける...
-
VB.netでメソッドからコントロ...
-
親クラスの型で子のオブジェク...
-
prototypeについて
-
Vba ListViewの行挿入に関して...
-
.matchの使用方法
-
LiveConnectって?
-
InternetExplorer.Application...
-
Smartyでのエラー
-
html形式で保存
-
Listのiteratorインターフェー...
-
Excel Book の変更の検知
-
C#のクラスで値渡しをする
-
下記のようなjavaのプログラム...
-
Pyhonを見ていて、関数とメゾッ...
-
最終配列にNULLが含まれる...
-
VBA FSOの詳細説明はどこ?
-
Objective-Cのプログラム式につ...
-
mapの値を全件取得
-
DOMと同名のユーザ定義メソッド...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBA 画像を貼り付ける...
-
Excel VBA 定数にオブジェクト...
-
サーブレットコンテキストの意...
-
C#のクラスで値渡しをする
-
VB.netでメソッドからコントロ...
-
servletからjspへオブジェクト...
-
エクセルVBA/SpecialCellsで特...
-
Vba ListViewの行挿入に関して...
-
C#で親にイベントを投げる方法
-
MessageBox.Show(Me,…の「Me」...
-
String型からlong型への変換は...
-
VB.NETでのnothing の意義について
-
UTF-8のテキストファイルを開く...
-
javaで、、、
-
System.Collections.SortedList
-
C#でのExcel操作について.(Ran...
-
VBSのGetFolderメソッドについ...
-
JSPでのArrayListの表示につい...
-
ピクチャーボックスに点を打つ...
-
VBAでの[]
おすすめ情報