Excelのインストールされているパソコンで、VBAのコード「CreateObject("Excel.Sheet")」を実行した戻り値は、Excel.Workbookオブジェクトであることを記事にしています。
「CreateObject("Excel.Sheet")」
が動くのなら、
「CreateObject("Excel.Chart")」
も、いけるのだろうかと考える方がいらっしゃるでしょう。
実務で使うのは私はおすすめしませんけれど、「CreateObject("Excel.Chart")」も動きます。
ただし「CreateObject("Excel.Sheet")」と同様、戻り値には要注意です。
CreateObject("Excel.Chart")を行うサンプル
以下のSubプロシージャを実行してみてください。
Dim obj As Object
Set obj = CreateObject("Excel.Chart")
obj.Application.Visible = True
Stop
End Sub
上記のSubプロシージャは、Excelがインストールされていれば、Word VBAからでもPowerPoint VBAからでも実行できます。
インストールされているExcelのバージョンによって、作成されるグラフが異なる場合もあるはずですが、いきなり下図のようなグラフが表示されます。
グラフシートと、グラフのデータの存在する下図のようなワークシートの存在するブックが、「CreateObject("Excel.Chart")」で作成されます。
Excel関連のProgIDはたくさんある
VBAのCreateObject関数に指定できるExcelのProgIDは、もっとも使われている
Excel.Application
の他にもあります。上記のSubプロシージャで利用している、
Excel.Chart
もその1つです。
CreateObject("Excel.Chart")の戻り値もWorkbook
「Excel.Chart」というProgIDから、戻り値をChartオブジェクトと誤解する方がおられるかもしれませんが、違います。グラフシートを表すChartオブジェクトは、Workbookオブジェクトの中にしか存在できません。「CreateObject("Excel.Chart")」の戻り値も、「CreateObject("Excel.Sheet")」と同じくWorkbookオブジェクトです。
上記のSubプロシージャを実行するとStopステートメントで中断しますから、拙著『いちばんやさしいPowerPoint VBAの教本』等で多用しているローカルウィンドウを表示して、オブジェクト変数objの型がどうなっているか確認してください。
上図のように、ブックを表すWorkbookオブジェクトであることが明示されています。
Home » エクセルマクロ・Excel VBAの使い方 » Office連携 » CreateObject("Excel.Chart")の戻り値もWorkbook