2023/06/25

Notes - Excel 連携:#12)グラフのオブジェクト構造

前回は、Shapes オブジェクトの AddChart2 メソッドを使って、とりあえずグラフを作成してみました。グラフに関する細かな操作に入る前に、ここまでのオブジェクト構造を整理しましょう。

Shapes.AddChart2 メソッド (Excel)


Shapes オブジェクト

まず、AddChart2 メソッドが定義されている Shapes オブジェクトです。

Shapes オブジェクト (Excel)

Microsoft Learn の説明の通り、Shapes オブジェクトは、オートシェイプや画像画像など、シート内に配置できる様々なオブジェクトのコレクションです。このオブジェクトの一つにグラフも含まれるということですね。

Shapes オブジェクトも Workbook コレクションや Worksheets コレクションと同様に Count プロパティが存在し、引数にインデックス番号を指定すると単一のオブジェクトが取得できる仕様となっています。

メソッドは、グラフを作成する AddChart2 のほかに、AddPicture2 や AddTextbox など様々なオブジェクトを追加するメソッドが用意されています。

さまざまなオブジェクトをまとめて管理するコレクションであることがよくわかりますね。


Shape オブジェクト

AddChart2 メソッドの戻り値は、グラフを表すオブジェクトではなく、Shape オブジェクトでした。

Shape オブジェクト

この Shape オブジェクトは、グラフだけを表すオブジェクトではなく汎用的な仕様となっています。

例えば、プロパティを確認すると、オブジェクトの位置を表す Left や Top プロパティがあり、サイズを表す Width や Height があります。

プロパティの一つにオブジェクトの種類を表す Type というプロパティがあます。このプロパティがとりうる値である『MsoShapeType 列挙 (Office)』を見ると、様々なオブジェクトが含まれることがよくわかりますね。

Shape.Type プロパティ (Excel)

MsoShapeType 列挙 (Office)

ほかにも、オブジェクト内にグラフが存在するかを表す HasChart というプロパティももあります。AddChart2 で作成された Shape オブジェクトは、この プロパティが True となっています。

実際のグラフ本体は、Chart というプロパティから取得できる Chart オブジェクトとなります。


Chart オブジェクト

グラフ全体を表すオブジェクトが Chart オブジェクトです。

Chart オブジェクト

Chart オブジェクトのプロパティを確認すると、グラフの種類を表す ChartType やグラフのタイトルである ChartTitle、タイトルを持っているかを表す HasTitle が存在します。

軸の設定や配色など、グラフにかかわるすべての操作は、このオブジェクトを経由して行うことになります。


まとめ

ここまでのオブジェクト関連を図にすると以下のようになります。


前回のコードに Chart オブジェクトを取得するコードを追加すると次の通りとなります。ほとんど変わり映えないですが...

Sub Initialize

  Dim oXls As Variant
  Dim oSheet As Variant
  Dim oShape As Variant
  Dim oChart As Variant

  'Excel の準備
  Set oXls = CreateObject("Excel.Application")
  Call oXls.Workbooks.Add
  Set oSheet = oXls.Workbooks(1).WorkSheets(1)

  'サンプルデータのセット
  Call xSetSampleData(oSheet)

  'グラフの作成
  Set oShape = oSheet.Shapes.AddChart2(, 4, 200, 1, 500, 200)
  Set oChart = oShape.Chart

  oXls.Visible = True

End Sub


前回 Notes - Excel 連携 次回

0 件のコメント:

コメントを投稿