VBA を使用して Windows API を呼び出す目的

Microsoft Office 2000/Visual Basic プログラマーズ ガイド   

VBA は、Windows アプリケーションの作成に使用するパワフルなツールです。ただし、VBA ではオペレーティング システムの一部、つまりアプリケーションで、VBA に直接公開される関数およびオブジェクトを通じて利用可能な部分のみが制御されます。Windows API には、オペレーティング システムを細部にわたって制御する関数が含まれます。VBA から Windows API の関数を呼び出して、VBA アプリケーションを拡張および強化することが可能です。

たとえば、VBA には、レジストリで VBA アプリケーション用に予約されている部分に対して読み取りおよび書き込みを実行する関数があります。GetSetting、GetAllSettings、SaveSetting、DeleteSetting などの関数を使用して、セッション間でアプリケーションの情報を管理できます。これらの関数で使用可能なサブキーは、レジストリの \HKEY_CURRENT_USER\Software\VB and VBA Program Settings サブキーのみです。レジストリのほかの部分で情報を保存または取得する場合は、Windows API を使用する必要があります。

Windows API は、オペレーティング システムを細分化して制御するため、1 つの作業を完成させるには、複数の関数を呼び出す必要がある場合があります。レジストリを操作する API 関数は複数存在し、これらの関数を組み合わせて使用します。たとえば、レジストリのサブキーに新しい値を割り当てるには、RegOpenKeyEx 関数を使用して、値の読み取りまたは書き込み用の既存のサブキーを開きます。次に、RegSetValueEx 関数を使用してサブキーに新しい値を設定し、RegCloseKey 関数を使用してサブキーを閉じます。

また、Windows クリップボードを操作する API 関数も VBA プログラマには有用な関数です。VBA には、クリップボードで作業する際に使用するオブジェクトはありませんが、クラス モジュールにクリップボード API 関数をラップすると、Windows クリップボードを表す、シンプルで再利用可能なオブジェクトを作成できます。1 つの作業を遂行するために複数の関数が必要な場合があります。たとえば、OpenClipboard 関数は、確認のためにクリップボードを開き、ほかのアプリケーションによってクリップボードの内容が変更されることを防ぎます。GetClipboardData 関数は、クリップボードに保存されているデータを返し、CloseClipboard 関数はクリップボードを閉じます。クリップボードが閉じた後は、ほかのアプリケーションでデータを使用できます。

メモ   Microsoft Office 2000 の各アプリケーションで使用可能な [クリップボード] ツール バーを使用して、クリップボードに最高 12 アイテムまで保存できます。また、コマンド バー オブジェクト モデルを使用すると、[クリップボード] ツール バーによって保存された複数のアイテムに対してプログラミングによる作業を実行できます。[クリップボード] ツール バーに最後にコピーされたアイテムは Windows クリップボードにも保存されます。

その他の役立つ API 関数は、この章で紹介されるサンプル アプリケーションで使用されています。IniFile.xls サンプルでは、初期化 (.ini) ファイルに対して読み取りまたは書き込みを行う方法を紹介しています。

System.xls サンプルには、オペレーティング システムの一般情報を設定して返すプロパティが多数含まれる、System と呼ばれるカスタム クラスがあります。たとえば、現在の画面の解像度を設定することなどができます。ローカル コンピュータのシステム時刻の設定と取得を行ったり、Windows フォルダや Windows の一時フォルダへのパスを取得できます。このサンプルを拡張して、システムに関する追加情報を提供できます。

EnumWindows.xls サンプルには、ウィンドウで作業する際に使用するコードが含まれています。このサンプルは、オペレーティング システムで開かれる表示可能なアプリケーションのウィンドウを表すカスタム オブジェクトのコレクションを作成します。ウィンドウに対する作業で API 関数 を使用して、実行中のアプリケーションおよびアクティブなアプリケーションを確認することができます。ウィンドウのサイズを設定または取得する、キャプションを返す、キャプションを点滅させる、ウィンドウをアクティブにする、ウィンドウを最小化するなどの操作が可能です。

以上のサンプル ファイルは、Office 2000 Developer CD-ROM の ODETools\V9\Samples\OPG\Samples\CH10 サブフォルダに含まれています。