Microsoft(R) Excel for Windows(R) Version 5.0 (以下 Excel 5.0)
この記事は、以前は次の ID で公開されていました: JP402466
概要
Excel 5.0 には、マクロ言語として「 Microsoft(R) Visual Basic(R) Programming System Applications Edition (以下 VBA) 」と「 Excel 4.0 マクロ」が用意されています (以下、この二つのマクロ言語を「 Excel 5.0 のマクロ」と便宜的に表記します)。
本文書は、Excel 5.0 のマクロから Windows Application Programming Interface(以下 Windows API) を使用したプログラムを作成する場合に必要になる製品や修得しなければならない技術、および技術情報を入手する方法について説明しています。
詳細
I. Windows API を使用する場合に必要になる製品
1. Windows SDK
Excel 5.0 のマクロから Windows API を使用する場合には Microsoft(R) Windows(R) Software Development Kit (以下 Windows SDK) が必要です。Windows SDK は主に C言語などで Windows 用アプリケーションを開発するために必要となる製品ですが、製品に含まれている情報は Windows API を使用する上で非常に重要な情報であり、C 言語での開発に限らず Windows API を使用する場合にはファンクション リファレンスとして有用です。
Windows API を使用した Windows 用アプリケーションの開発は高度な技術力と多くの情報を必要とするために、アプリケーションの設計を行う以前に「どのような技術力、参考情報」が必要なのかを知っておく必要があります。以下は Windows API を使用したマクロを Excel 5.0 で作成する場合に必要となる技術力について説明しています。
1. Windows SDK に関連した仕様と基礎技術の必要性
Windows API を Excel 5.0 のマクロで使用する場合は Windows SDK に記載されている Windows API の仕様やプログラミングテクニックをあらかじめ修得しておく必要があります。
そのため、少なくても C 言語で Windows API を使用した Windows 用アプリケーションを作成できる技術力が必要になります。
さらに VBA で Windows API を使用する場合は、Windows API の C 言語用の関数プロトタイプ宣言を VBA の Declare 宣言に変換できる技術力が必要になります。この部分については「 Visual Basic ユーザーズ ガイド」 240 ページ「 10.3 DLL の利用」を参照してください。
2. Windows の動作メカニズムとプログラミングテクニック
Excel 5.0 のマクロから Windows API を使用することは Windows API の動作効率や実行速度の影響を直接的に受けることを意味します。つまりプログラマは Windows API を使用した場合の動作効率や実行速度を考慮したプログラムを作成する必要があります。例えば Windows API の GlobalAlloc を使用する場合は、取得するメモリ容量によって変動する仮想メモリマネージャのパフォーマンスを知っておかなければなりません。これらは Windows の動作メカニズムをある程度把握しなければならないことを意味しています。
Windows API の動作効率、動作速度には多様な複合条件により決まるために簡潔に文章で表現することは困難です。しかしこれらは非常に重要なプログラミングテクニックの要素であり技術力です。
Windows API の動作効率、動作速度を見積もるためには Windows API を用いた数多くのプログラミング経験が必要になります。
3. Windows API を用いたプログラムをデバッグできる技術力
Windows API を使用することは Windows のシステムに関連した関数を直接呼び出すことです。誤った使用方法はアプリケーション エラーの発生や情報の不整合、システムの破壊を引き起こします。プログラムの問題点をデバッグするには Windows SDK に付属しているデバッグ ユーティリティを使用し問題を検証する技術力が必要です。これはデバッグ ツールを使いこなすことであり、Windows API の仕様を踏まえ論理的に問題を絞りこむテクニックです。なお、Windows SDK 付属のデバッグ ユーティリティと Windows API の仕様は Windows SDK に記載されています。
4. C 言語と Excel 5.0 のマクロとの言語仕様の違い
C 言語と Excel 5.0 のマクロでは言語仕様の多くが異なります。Windows API を呼び出す上で言語仕様の違いが問題になるケースがあります。例えば Excel 5.0 のマクロはポインタ型変数を持っていないため、関数ポインタを用いたコールバック関数の設定ができなかったり、メッセージをハンドリングするための Windows 関数を作成することができないといったような点です。これらは Excel 5.0 のマクロの言語仕様による制限事項です。Excel 5.0 マクロで Windows API を使用する場合は、これらを把握しておく必要があります。
5. Excel 5.0 の内部処理による問題
VBA は多くのオブジェクトを装備しています。各種のオブジェクトは自動化された処理を隠し単純なコードによるオブジェクト操作を可能にして、プログラムの簡略化を実現しています。これは VBA の大きな長所です。しかし Windows API を使用したプログラミングを行う場合はこれらが大きな短所になりうる場合があります。「自動化された処理」ということはオブジェクトのメカニズムをブラックボックス化しているため、プログラム中から Windows API を用いてオブジェクトに「操作できない」または「予想に反した結果」になる場合があります。これらは VBA の「プログラムの簡単さ」という大きなメリットと引き換えになったデメリットです。
オフィシャル ユーザー サポートでは、プログラム中から Windows API を呼び出すための一般的な Declare 宣言の記述方法はサポートします。しかし、個々の Windows API における宣言方法や Windows API を用いたプログラミング テクニックおよびデバッグといったお客様固有の問題は、誠に申し訳ございませんが弊社のサポート範囲外とさせていただきます。