VSTO Excel からのグラフの生成

[今日のみちしるべ第9回 自分が信じた道標]

久々の更新です。待ちわびていらっしゃる方がいましたら、本当にすみません。

別に元気がない訳でも、ネタが無い訳(ホントか?)でも無いのです。

最近、仕事でただ、ただ、走り続けている感があって、給水やバナナを取る余裕もないという感じで、ブログを更新する余裕さえ無いという感じです。

ちなみに今日は三週間ぶりに運動をしました。。。(最近、大好きな運動さえもできない感じです。)

Tech-Ed の準備に避ける時間は今のところ、まだ、取れないです。(おいおい、大丈夫か?)

今週末の夏休みに本格的にデモをこさえる予定です。(そこはお楽しみに。僕も皆様にお見せできるのが楽しみです。)

最近、あまりにも仕事の負荷が高く、この道標で本当によかったのかなと思うことも無きにしもあらずですが、次の道標が見えてこないので、まだまだ、この道を進んでいくしかないようです。

きっと、この道を止めて他の道にいくこともできるとは思うのですが、この道で出会う人たちがやはり好きだからでしょうか。

戻る気持ちも止める気持ちも不思議と起きません。

ただ、欲を言えば、もう少し、この道をもう少しゆっくり歩きたいです。この道で出会う人や風景を楽しみながら。。。

なんだか、抽象的ではありますが(笑)本題に行きたいと思います。

[本題]

VSTO Excel におけるグラフの作成についてです。

VBA でもそうですが、ほとんど同じような感じで VSTO でも Excel のグラフの生成をおこなえます。

シートの特定の範囲を読み、グラフのサイズを設定し、読み込んだ範囲の値をグラフの種類を選択しグラフを生成します。

それほど、難しいものではないので、VB のサンプルコードを元にご紹介したいと思います。

以下のようなシートがあります。ボタンをクリックすると図.2 のようなグラフが生成されます。

図1

image

図2

image

サンプルコードと解説:

'チャートクラスを宣言します。
Dim salesData As Microsoft.Office.Tools.Excel.Chart

'グラフを追加する AddChart メソッドを利用しサイズと名前を引数として設定します。
salesData = Globals.Sheet1.Controls.AddChart(50, 150, 250, 150, "salesData")

’グラフの種類を設定します。
salesData.ChartType = Excel.XlChartType.xlAreaStacked

’グラフに表示するセルの範囲を設定します。
Dim chartRange As Excel.Range = Me.Range("A4", "E8")

'グラフに取り込むソースデータを指定します。
salesData.SetSourceData(chartRange)

グラフの種類の変更も XlChartType の変更で容易です。

下記は xl3DColumnStacked にしました。

図3

image 

参考資料は以下をご確認ください。

Chart クラス
https://msdn.microsoft.com/ja-jp/library/microsoft.office.tools.excel.chart(VS.80).aspx

AddChart メソッド
https://msdn.microsoft.com/ja-jp/library/bh4wd905.aspx

XlChartType 列挙型(グラフの種類)
https://msdn.microsoft.com/ja-jp/library/microsoft.office.interop.excel.xlcharttype(VS.80).aspx

※C# 版は今回は簡単なので割愛しちゃいます。すみません。