前回は、ノーツから Excel に接続する方法についてまとめました。
実際に Excel とデータ連携するとなると、Excel のワークシートに対して入出力することになります。そこで、連携したデータを記録する基本となるオブジェクトであるワークシートの取り扱いについてまとめます。
まずはサンプル
以下のコードをエージェントに記述して実行すると、Excel のオブジェクトを新規作成した後、新しいワークブックを開き、最初のワークシートの名前をメッセージボックスで表示します。
Sub Initialize Dim oXls As Variant Dim oSheet As Variant Set oXls = CreateObject("Excel.Application") Call oXls.Workbooks.Add Set oSheet = oXls.Workbooks(1).WorkSheets(1) oXls.Visible = True MsgBox oSheet.Name, 64 End Sub |
これを題材に、Excel のワークシートにアクセスするまでの方法を確認しましょう。
Workbooks オブジェクトのふるまい
LotusScript に慣れ親しんだ方からすると、Workbooks オブジェクトのふるまいに違和感を感じませんか?
オブジェクトとして、Add メソッドをコールした後、配列のように添え字をつけてアクセスもしています。
前回紹介した Microsoft Learn で、Application オブジェクトの Workbooks プロパティを調べてみました。
Application.Workbooks プロパティ (Excel)
どうやら、このオブジェクトはコレクションのようです。続いて、このプロパティで取得できる Workbooks オブジェクトです。
メソッドを確認すると、使用した Add メソッドが存在します。また、コレクションぽく Count プロパティの存在が確認できます。
ただ、配列のようにアクセスし、コレクションの1要素である Workbook オブジェクトが取得できるとは、どこにも記載されていません。唯一、近しいプロパティとして、Item というのがありました。引数にインデックス番号を指定すると単一のオブジェクトが取得できるようです。
LotusScript の NotesDocument クラスの拡張構文で、フィールドにプロパティとしてアクセスできるような特殊な機能で実現されていると、勝手に解釈しました。
GetNthWorkbook のようなメソッドがあると、LotusScript 屋にはわかりやすいのですが...
ワークシートにアクセスする経路
一部勝手な解釈は含みつつ、Application オブジェクトからシートオブジェクトを取得するまでで使用するオブジェクトを整理してみました。反転部分がクラス名で、太枠の上段がプロパティ、下段がメソッドです。
Workbooks オブジェクトの Add メソッドは新規のワークブックを作成、Open が既存のワークブック(Excel ファイル)を開くメソッドです。Close はヘルプによると、すべてのワークブックを閉じるようです。
Workbook オブジェクトは、1つのワークブックを表すオブジェクトなので、保存(Save)や名前を付けて保存(SaveAs)メソッドが存在し、このブックだけを閉じることができます(Close メソッド)。
そして、Workbook オブジェクトにワークシートにアクセスするためのプロパティが存在します。ワークシートもワークブックと同様の構成で、コレクションである Worksheets オブジェクトが存在し、配列的なアクセスで単一のシートを表す Worksheet オブジェクトを取得できます。
Worksheet オブジェクトでは、シート名を表す Name プロパティや シートを表示/非表示するための Visible プロパティが存在します。
最初に記述したサンプルでは、
Set oSheet = oXls.Workbooks(1).WorkSheets(1) |
となっており、一気にワークシートオブジェクトを取得し、oSheet 変数に代入していました。
ここに記載した範囲のプロパティやメソッドで、複数のワークシートがあっても、構造の理解に困ることはないかと思います。
前回 | Notes - Excel 連携 | 次回 |
0 件のコメント:
コメントを投稿