Excelを構成しているオブジェクトは、すべてが対等な関係ではなく、ワークシートは、セルより上位に当たる「親」のような存在です。またブックはさらにそのワークシートより上位に当たる「親」のような存在です。
この「親」のことを「コンテナ」と呼びます。
●コンテナの概念を利用したステートメント
下の例は、「Book1.xlsのSheet1のセルA1」に「コンテナ」という文字列を入力します。
この例文のように、コンテナの概念を利用してオブジェクト同士を連結していくと、1つのステートメントで、別のブックの別のシートのセルにデータを入力することが出来ます。
●コンテナ概念を利用しないステートメント
Workbooks("Book1.xls").Activate
Worksheets("Sheet1").Activate
Range("A1").Value = "コンテナ"
この例文のようにコンテナ概念を使用しないと場合は、ブックやシートを順にアクティブにしなければなりません。
このような処理は、VBAでは意外に時間がかかり、処理速度は遅くなってしまいます。
Workbookオブジェクトの集合体は、Workbooksコレクションであり、Worksheetオブジェクトの集合体はWorksheetsコレクションです。
VBAでは、オブジェクトの場合には「Workbook」や「Worksheet」のように単数形になります。そしてコレクションの場合には、「Workbooks」や「Worksheets」のように複数形になります。
●ただし、セルを表す「range」のような例外もあります。
セル範囲(例:Range("A1:D10"))
<例1>
全てのブックを一度に閉じるステートメントです。
Workbooks.Close
解説
「Workbooksコレクション」とは、開いてるWorkbook全体を指し、この場合全てのブックを閉じるという意味になります。
<例2>インデックス番号でオブジェクトを特定する
| <サンプル>ブックを閉じる Workbooks(1).Close |
1、インデックス番号を使って「Workbooksコレクション」の中の「1番目」のブックを参照する。 2、結果的に単体の「Workbookオブジェクト」を参照する。 |
| Workbooks | (1) | |||
| コレクション | + | インデックス番号 | = | (単体の)オブジェクト |
<例3>ブック名でオブジェクトを特定する。
オブジェクトを特定するときに使用するのは、インデックス番号だけではありません。
インデックス番号の代わりにブック名を使用することが出来ます。
ブック名は「”」ダブルクヲーテーションで囲みます。
| <サンプル>ブックを閉じる Workbooks("Book1.xls").Close |
||||
| Workbooks | ("Book1.xls") | |||
| コレクション | + | ブック名 | = | (単体の)オブジェクト |