ExcelVBAはオートシェープ(図形)やグラフも操作できるのと考えられる用途

ExcelVBAを勉強してから10ヶ月くらいは経つでしょうか。やっぱり実際に勉強するのとしないのとでは気づく範囲というのは全然違うなと常々感じます。やっぱり何事も「確認する」って大事ですね。

 

多くの人にとってExcelVBAというと、ただ単にExcel上の表やデータの処理を効率化できたり、プログラムに処理させることにより人間の手を入れなくて済むのでミスも少なくなる、といったイメージしかないかもしれません。

 

自分もつい最近まで、ExcelVBAに対してそのようなイメージでした。しかし勉強を進めていくことにより操作できる範囲はExcelだけに限らないといったことを以下の過去記事で触れてきました。

 

OLEオートメーションやAPIという機能によって、操作できる範囲がExcelだけではなくて、accessやword、powerpoint、Outlookはもちろんインターネットエクスプローラも操作できるようになります。

 

またwindow上に開かれたアプリケーションであればSendKeysメソッドを利用して操作できるなど、そういったことを知ることはその時の自分の価値観に大きな衝撃を与えてくれました。

 

というのも、そういった知識を知る前までの自分にとって、今使っているアプリケーションで別のアプリケーションを自分の手で操作できるという概念が全くなかったからです。まさに「えっ!こんなこともできちゃうの!?」という感じでした。

 

それと同じくらいの衝撃を与えてくれた知識が、ExcelVBAでオートシェープ(図形)やグラフも操作できるというものです。このことについて思ったことを今回は書いていってみます。

今までのExcelVBAのイメージが覆された

通常、表計算ソフトであるExcelのようなソフトであれば、数値や文字列を扱うのがほとんどではないでしょうか。例えば経理であれば、この勘定科目は何円とか、この年のこの月の月末の支払いはいくらだった、など図形などの視覚的に表現するものってほとんど使わないかと思います。

 

仮に使うとしても、そういった専門の部署の業務でグラフや図形を日常的に使う仕事だとか、もしくはマニュアルで矢印や四角でポイントになる所を囲ったりするなど、結構限られてくるのではないでしょうか。

 

ですから、文字列や数値を中心に扱うExcelを使った仕事においてExcelVBAで操作できるのは文字列や数値だけだと思っていたので、ExcelVBAで図形やグラフも操作できるというのは、自分にとってすごく新しい視点に感じました。

 

では具体的にどういった例があるのでしょうか。例えば、ガントチャートで使う矢印線などがひとつの例でしょう。

ガントチャートにおけるShapesコレクションとAddLineメソッド

ExcelVBAにおいて、具体的にどういったコードなのか、どういった形で使えるのか、『続々ExcelVBAのプログラミングのツボとコツがゼッタイにわかる本』の内容も少し交えて説明します。

 

本書は以下の過去記事でも書いた『続ExcelVBAのプログラミングのツボとコツがゼッタイにわかる本』の続編となります。

 

『続々ExcelVBAのプログラミングのツボとコツがゼッタイにわかる本』はアプリケーションの作成を通してVBAを学ぶことができます。本書において作成するアプリケーションは2つあるのですが、その中のひとつに「ガントチャートの作成」というものがあります。

 

ガントチャートとは、プロジェクト管理や生産管理などの工程管理で主に用いられる表です。作業の進捗状況を視覚的にわかりやすく表現するために使われ、縦もしくは横の表を利用してつくられます。

 

コードは『続々ExcelVBAのプログラミングのツボとコツがゼッタイにわかる本』において以下のような書式になります

p.34

オブジェクト.Shapes.AddLine(BeginX, BeginY, EndX, EndY)

「オブジェクト」の部分には「どのワークシートのオブジェクトか」を指定します。図形は「Shapesオブジェクト」として扱い、矢印線を引くにはShapesコレクション以下にある「AddLineメソッド」を利用する、という書式です。

 

もちろんこれだけでExcelの画面上に図形が表示されるわけではなくて、上記のコード以外にもオブジェクト変数を宣言したり、座標を他のコードによって設定する必要があります。

 

上記のオートシェイプ(図形)を表示するプログラムを実行した場合Excelの画面では以下のような感じになります。

図の「作成」ボタンを押すと、開始日と終了日の範囲内に対応した矢印線が引かれる、というプログラムです。もちろんExcelVBAで操作できる範囲は矢印線だけではなくて、Excelにある図形の多くは操作できるでしょう。工夫次第では様々な用途に使えると思います。

コメント