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にある図形の多くは操作できるでしょう。工夫次第では様々な用途に使えると思います。

Findメソッドの機能について

今回の記事では『続々ExcelVBAのプログラミングのツボとコツがゼッタイにわかる本』を交えながらExcelVBAでも図形が使えますよ、ということを伝えたかったのですが、本書の図形を使えるコード以外にも個人的に嬉しい発見がありました。

 

それは「Findメソッド」の使い方が書かれていた点です。このブログでは以下のような過去記事を書いています。

引用した過去記事ではエクセルVBAスタンダードの勉強までしたのですが、ベーシックからスタンダードの範囲でも「Findメソッド」は載っていませんでした。いや、もしかしたら自分が忘れているか見落としていただけもしれませんが、自分が覚えている範囲では見つけられませんでした。

 

なぜこのFindメソッドについて取り上げたかというと、少しでもVBAの勉強をするために、会社の業務の合間にExcelVBAを使って簡単なプログラムをつくったり、インターネットからプロパティやメソッドの表などを集めて自分なりにわかりやすいように「一覧集」みたいなものをつくったりしていました。

 

その中で「Findメソッド」というものを見つけたのですが、「おそらくこれはすごく便利に使えるんじゃないか」と思ったからです。ただ、Findメソッドを見つけた少し前の自分では、まだ未熟で使いこなすことはできませんでしたが。

 

なぜ便利だろうと思ったのかなんですが、それはこのFindメソッドを使うとエクセルの画面上で自分が必要な数値や文字列を「検索できる」からです。具体的な書式について、ちょっとだけ『続々ExcelVBAのプログラミングのツボとコツがゼッタイにわかる本』から引用すると以下のようになります。

p.55

オブジェクト.Find(what, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SearchFormat)

引数はたくさんあるのですが、省略できないのがwhatだけで、what以外は全て省略できます。what以外の引数の説明については、本書か他のVBAについて詳しく書かれているサイトを参照していただければと思います。

 

以前自分が考えていたのは、業務で毎日使う表があったのですが、その表の中の○○株式会社を検索、検索された文字列の下の行に新しく行を挿入、挿入された行の指定の部分に新しく数値や文字列を入れたい、みたいなことを考えていました。そのために何か良いコードはないものかとインターネット上で探して見つけたのが、この「Findメソッド」だったというわけです。

 

その時の自分はまだ全然VBAについてわかっていなかったのでFindメソッドというものがあるんだ、ぐらしかわからず、結局他の方法で代替しました。そういったいきさつがあったので、本書においてFindメソッドの使い方がわかって嬉しかったということで、ここで簡単に取り上げてみました。

業務においてオートシェープ(図形)やグラフの考えられる用途

確かに多くの企業の経理や総務などのバックオフィス的な業務でExcelVBAを使えるようになることは、ミスを少なくし、業務を効率化できるという点で非常に役立つでしょう。

 

しかし、オートシェープ(図形)やグラフの操作をExcelVBAで自動化する場面てそんなにあるものでしょうか?経理や総務では、Excelの画面で吹き出しを利用して何か目印とか、他の人に対する伝言などで使う場面はあるかもしれません。もしくは、マニュアルを使う時に矢印や吹き出しを使う時には便利かもしれません。

 

他に何か考えられる用途はあるでしょうか。自分がいろいろ考えた範囲では、営業マンが支店別や月別の売上集計表をつくる時とか、株価の値動きや何らかのデータ分析で結果を視覚的に表現したい時とかに使えるのではないかと思いました。

 

売上集計表を棒グラフなどを利用して図を作成する、というのは何となく想像できると思いますが、株価の値動きやデータ分析?と思った方もいるかもしれません。

 

今までとは違った道を歩いてみると思いがけない発見があるように、ExcelVBAという新しい分野を勉強しているといろいろと発見があったりします。そういった発見の中に『自動売買ロボット作成マニュアル~エクセルで理想のシステムトレード (現代の錬金術師シリーズ)』という本がありました。

 

今は他の分野の勉強をしており、本書はまだ買っただけでちらっとしか読めていないですが、ExcelVBAというのは使い方次第で強力なトレードツールにもなるようなのです。

 

インターネット上のデータベースから自動でデータを取得したり、取得したデータからテクニカルチャートを自動で作成したり、さらにそれを細かく操作できたりして自動売買システムを構築できるということから、「ExcelVBAってこんなこともできるの?」と本書の発見で非常に驚かされました。

 

また、マーケティングの用語のひとつに「多変量解析」というものがあるのですが、こういったデータ分析で図やグラフを使って視覚的に表現したい時などに、それらをVBAを使って自動で作成できるようになれば便利になるのではないでしょうか。

 

ExcelVBAで図形やグラフを自動でつくれるというのは、ここまで書いたような業務などで需要がありそうですし、工夫や使い方次第ではもっといろんなことに役立てられるのではないでしょうか。

あわせて読みたい

こんな記事も読まれています

コメント