VBAプログラミングの勉強で最後に出てくるのがAPIです。エクセルVBAのプログラミングの最後の一山です。これで一通り知らない文法はなくなります!頑張って行きましょう。
この記事はオブジェクト指向やOLEインフォメーションが理解出来ている方(当ブログではVBA三段と定義)を対象読者に想定しています。
VBAのレベルに関しては、レベルについてはExcel VBAの実力(レベル)を定義してみる 初心者~三段をご参照ください。
目次
四段へのステップ
オブジェクト指向やOLEインフォメーションが理解出来ている状態を三段と呼んでいます。Windows APIを利用できることになることが四段へのステップです。三段の皆さんはオブジェクト指向やOLEをマスターしているので、三段と四段の違いはプログラミング能力と言うより、単にやる気とか調べる力の違いではないかと思っています。
オブジェクト指向がしっかりできている
APIの勉強を進めるに当たり、VBAにおけるオブジェクト指向の考え方を復習しておきましょう。
- 処理の流れと機能を分離する
オブジェクト指向の考え方は処理の流れを記述するプログラムと、実装したい内容を実現するために機能を提供するオブジェクトに分離することです。
エクセルの場合はシートやブックを初めとする既定のオブジェクトが存在しますが、自分で機能を持たせたモノを作る事ができます。その設計図がクラスモジュールです。
クラスモジュールで作成したクラスをオブジェクトとして利用できるようにし、その後実際に使う、処理の流れを記述するのが標準モジュールの本質的な意味合いでした。
オブジェクト指向が分かった上でWindows APIの概念を理解する
Windows APIはWindowsの機能を借りて使う、と言う概念です。
OLEとの違いはクラス(≒VBAの場合はオブジェクト)を借りてくるのではなく、機能を借りてくると言うところです。VBAにおけるオブジェクト指向で機能を実現するのはSubプロシジャやFunctionプロシジャです。APIは○○というライブラリ(機能がたくさん詰まったもの)に入っている××という機能を使います!と宣言して使います。機能なので、SubプロシジャやFunctionプロシジャを呼び出すのと同じようにCallで機能を呼び出します。
調べればなんとかなる、最終的にはできると信じている
他のアプリケーションの名前なんて日常的に使うモノではないので知らなくて当然です。必要な時にピンポイントで使います。と言う事は、知らないことを調べる力が物を言います。
結局三段と四段の違いはプログラミングの実装能力と言うよりは、やりたいことから知らないライブラリや関数名を調べる力の違いと言えます。
「知らないけど調べたらなんとかなる」と思える、信念のようなモノがある状態です。ここまで来れば、実は他のプログラミング言語を学習するときにも「知らないけど調べたらなんとかなる」を貫けるので、頭一つ抜きん出ることができます。
もし周囲にC言語を書く事ができる人がいる方は思い出して欲しいのですが、その人はおそらくC言語しか書けない訳ではないと思います。Javaとか他の言語もできますよね。彼らは得意な言語と好きな言語とできる言語の3種類を持っています。
他言語では調べるのが当たり前なので、調べるたびに、「あ、これってこの言語で書いた方がいいんじゃない」みたいな感じで×言語を増やしていっているのです。
VBAは直感的に分かりやすいため、一度勉強すれば相当できます。調べるのに苦労することは余りありません。つまりVBAから入るとVBA岳になってしまう可能性が高いんですよね。
VBAだけでここまで来れた方は、今こそ殻を破って、「知らなくても調べさえすればOK」の感覚を身に付けましょう!
この状況にたどり着いた状態が四段です。
まとめ
VBAのプログラミングの実装能力を三段から四段にする為のステップは下記の通りです
- オブジェクト指向やOLEが使える状態でAPIを勉強する
- 知らない事を調べる実力をつける(詳しくある必要はない)
- 調べさえすればなんとかなるという感覚を身に付ける
<Windows APIの実装方法関連記事>
VBA Windows APIを使う手順(調べる→宣言する→使う) - Mutable_Yunの業務改善ブログ