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」の文字が。MicrosoftOfficeで代表的なのが、エクセル、ワード、アクセス、パワーポイントですが、実はそれ以外にも使えるアプリケーションがあります。

 

全部を確認したわけではありませんが、パブリッシャー(Publisher)というものも見てみました。Microsoftから出されているOfficeソフトのひとつで簡易DTPソフトになります。

 

これも初期設定では開発タブはないのですが、ワードと同様の方法による開発タブを表示できるようにすると、「Visual Basic」を確認できます。あるんですねぇ。

 

Microsoft Officeに関するソフトを全て確認できるわけではないのですが、もしかしたら全ての製品でVBAが使えるのかもしれないですね。どんな仕事にも定型的な部分とか繰り返し作業ってあったりしますからね。

 

そのような手間がかかったり、面倒くさく、ミスが許されない部分はVBAでマクロがつくれれば非常に楽になります。また、Microsoft OfficeのものであればVBAを使うことで異なるアプリケーション間でもやりとりができるようです。

 

例えばVBAを利用してエクセルでつくった表をワードの文書内に埋め込むなどです。この機能ってすごくないですか?最初知ったときは非常に驚きました。

 

まずエクセル以外にもVBAが使えるということに驚いたことはもちろん、MicrosoftOfficeのものであれば異なるアプリケーション間で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オートメーションを利用すると、エクセル以外のシステムも操作できるということです。

 

コメント