VBAが使える範囲はエクセルの他にMicrosoft系列以外にも及ぶ

プログラミング言語というものに対して多くの人はどんなイメージを持っている

でしょうか?プログラミング言語には様々な種類がありますが、その中のひとつ

に「VBA」というものがあります。

VBAといえばエクセル、エクセルといえばVBAというイメージが以前の自分には

ありました。

VBAとは、Visual Basic for Applications の略です。その意味は特定のアプリケー

ションに特化したプログラミング言語のことであり、Visual Basicをベースとして

います。

私達が仕事で日常的に使っているExcelなどのMicrosoft Officeのアプリケーション

に入っています。

このブログでは、数ヶ月前からとあるきっかけからVBAについて勉強を始めて、そ

の内容や効果についていろいろと書いてきました。

勉強したからこそわかるようになったのですが、VBAが使える範囲って、エクセル

「だけではない」んですね。

VBAを始める前の自分のイメージでは、VBAというのはエクセルだけにしか使えな

いものだと思っていました。また「Visual Basic for Applications 」とあるように

特定のアプリケーションに特化したプログラミング言語なわけですからそういうも

のなのだろうとずっと思っていました。えぇ、つい最近までは。

このVBAを使ったプログラムやシステムが影響を与えられる範囲というのは、エク

セルだけではなくて実はいろいろ使えるんだということを知るようになりました。

ですから、ちょっとした感動、おもしろさ、好奇心が出てくるようになってきたわ

けで、今回はそのことについて自分が思ったことを書いていってみます。

VBAはワード、パワーポイント、アクセスでも使える

「ワード、パワーポイント、アクセスでVBAが使える」と言われて驚く人はいない

でしょうか?

「そんなことはもう知っている」という人もいるでしょうし、「VBAが使えるのっ

てエクセルだけじゃないの?」という人もいるでしょう。最近まで自分は後者でし

た。

たぶんVBAについて勉強する機会がなかったら、一生知らなかったかもしれません。

そもそも使うきっかけとかないですからね。実際に調べてみたら確認できました。

自分が持っているパソコンの中に入っているMicrosoft Officeのワード2013だと、

開いた画面上のリボンにはVBAが確認できるタブはありませんでした。

けれども、リボン上で右クリックして表示される画面で「開発」の所にチェックを

入れることで開発タブが表示されるようになります。その中に「Visual Basic」を

確認できました。あぁ、エクセル以外でも本当に使えるんですね。

他にアクセスでも確認できました。アクセス2013を開くと「作成」タブがあって、

その中に「Visual Basic」があります。

パワーポイントでも確認できました。自分のパソコンで使えるのはパワーポイント

2013ですが、ここではワードと同様に開発タブがなかったので、同じ方法でリボン

に開発タブを表示させます。

その開発タブを開いてみると、ありました。「Visual Basic」の文字が。Microsoft

Officeで代表的なのが、エクセル、ワード、アクセス、パワーポイントですが、実

はそれ以外にも使えるアプリケーションがあります。

全部を確認したわけではありませんが、パブリッシャー(Publisher)というものも

見てみました。Microsoftから出されているOfficeソフトのひとつで簡易DTPソフト

になります。

これも初期設定では開発タブはないのですが、ワードと同様の方法による開発タブ

を表示できるようにすると、「Visual Basic」を確認できます。あるんですねぇ。

Microsoft Officeに関するソフトを全て確認できるわけではないのですが、もしかし

たら全ての製品でVBAが使えるのかもしれないですね。どんな仕事にも定型的な部分

とか繰り返し作業ってあったりしますからね。

そのような手間がかかったり、面倒くさく、ミスが許されない部分はVBAでマクロが

つくれれば非常に楽になります。また、Microsoft OfficeのものであればVBAを使うこ

とで異なるアプリケーション間でもやりとりができるようです。

例えばVBAを利用してエクセルでつくった表をワードの文書内に埋め込むなどです。

この機能ってすごくないですか?最初知ったときは非常に驚きました。

まずエクセル以外にもVBAが使えるということに驚いたことはもちろん、Microsoft

Officeのものであれば異なるアプリケーション間でVBAでやりとりができるというこ

とに。

この機能を知っているか知らないかで、仕事の幅が全然違ってくるんじゃないでしょ

うか。ちなみにもっとすごいことが次の項目で書いてあります。

VBAはIE(インターネット・エクスプローラー)でも使える

VBAを勉強していると「OLEオートメーション」なんて言葉を目にしたりします。

なんだかかっこよさそうな名前ですね。どのような機能なのでしょうか。

『VBAエキスパート公式テキスト Excel VBA スタンダード』には次のように書か

れています。

p.182

OLEはObject Linking and Embeddingの略称で、アプリケーションから別の

アプリケーションを操作したり、Wordの文書内にExcelの表を埋め込むなど、

オブジェクトをやり取りするための規格です。

OLEオートメーションは、Excel VBAだけではなく、Visual BasicやVisual C#

など一般的なプログラミング言語から使用できる共通の規格です。

エクセルで使えるプログラミング言語なんだけど、VBAじゃない、みたいなイメ

ージでしょうか。

厳密に言えば、VBAはエクセルやワードなどのMicrosoft Officeのアプリケーショ

ン内でしか使えないようです。ですが、エクセルでもVBA以外でもMicrosoftが開

発したVisual Basicなどであれば、特定のアプリケーションだけでなく別のアプリ

ケーションでも使える、

そういった仕組みが「OLEオートメーション」である、ということでしょう。

本書においては、このOLEオートメーションを利用することでIE(インターネッ

トエクスプローラー)も使える、とあります。最初このことを知ったときは、

「え?インターネットも何か操作できちゃうの!?」と驚きました。

ちなみにIE(インターネットエクスプローラー)とは、Microsoftが開発したウェ

ブブラウザです。ウェブブラウザとはウェブページを画面上に表示するシステム

のことですが、これにはIE以外にもグーグルが開発したChromeやMozilla Corporation

のFirefoxなどが有名です。

インターネットで例えば天気に関するウェブページを見たい場合は、このブラウ

ザというものが必要になってきます。これを操作できるのがOLEオートメーション

です。

例えば特定のページを表示するとか、特定のページから文字列を抽出、操作によっ

ては指定のページの内容も書き換えることができるようです。

これってかなりすごいことじゃないですか?例えば経理の仕事であれば、毎日の為

替のレートの収集に使えそうだなと思いました。

世界の通過には円だけではなくドルやユーロ、元、香港ドル、オーストラリアドル

等々たくさんの種類の通貨があります。会社によっては特定の日のレートだけでは

なく、ある一定期間のレートの平均を使ったりする所もあります。

こういった時に、特定のページから為替のレートを抽出する仕組みをつくれば、仕

事がかなり楽になりそうです。仕組みさえ出来ればボタン一つでその日のレートが

エクセルのシートに抽出されるわけですから。

また、銀行からの入出金データをダウンロードするときなんかにも使えそうですね。

今の時代はインターネットバンキングなんて言葉もあって、インターネット上から

銀行の入出金データをダウンロードできます。

そのダウンロードしたデータを自社の会計ソフトに読み込ませるわけですが、これ

が結構面倒くさいのです。会社が取引する銀行というのは基本的に1社だけでないで

すから。みずほ銀行とか三菱東京UFJとか三井住友とか他にもいろいろ銀行はありま

す。

例えば自社が10の銀行と取引していたとして、毎日10行の入手金データを確認して

ダウンロードしなければならないとします。この作業が結構時間がかかって面倒くさ

い。しかしOLEオートメーションを有効に使えればこの作業も一瞬で終わらせられる

んじゃないかと思いました。

OLEオートメーションはここまで書いたこと以外にもたくさんのメリットがあります

が、次のような注意点もあります。

『VBAエキスパート公式テキスト Excel VBA スタンダード』

p.186

OLEオートメーションを使うと、Excel以外のアプリケーションをVBAから操作

できます。しかし、それはセルを操作するほど簡単なことではありません。た

とえば、参照設定で登録するオブジェクト名や、CreateObject関数の引数に指

定するクラス名は、VBAのヘルプには載っていません。

OLEオートメーションで操作するオブジェクトのクラス名が何なのかは、何ら

かの方法で調べなければなりません。

(中略)

VBAのヘルプや解説書には載っていませんし、マクロ記録でも記録されませ

ん。では、どうやって必要なプロパティやメソッドを知ればいいのでしょう。

それにはInternet Explorerのオブジェクト構造やプロパティ、メソッドなど学

習するしか方法はありません。

うーん。要は自力で手探りで勉強していくしか方法はないということでしょうか。

自分が確認した範囲では、確かにOLEオートメーションに関する書籍はVBAやエクセ

ルよりかは少ないです。

VBAに関する本であれば、「○○というメソッドは・・・」とか「△△というオブジ

ェクトは・・・」みたいに丁寧に書かれているものもありますが、OLEオートメーショ

ンに関する本は実戦形式のものが多い気がします。

以上のことをまとめると、厳密にはVBAでエクセル以外のアプリケーションやシステム

を操作できるわけでないんだけど、エクセルを通して使えるVBA以外のMicrosoft社製の

他のプログラミング言語とOLEオートメーションを利用すると、エクセル以外のシステ

ムも操作できるということです。