本ページは公開が終了した情報の複製であり、掲載時点での情報です。本ページに記載されている内容について各所に問い合わせることはご遠慮下さい。
サポート技術情報

[XL]VBAやExcel 4.0 マクロからWindows APIを使用する際の注意点

文書番号: 402466

最終更新日: 1998/03/23


この資料は以下の製品について記述したものです。

この記事は、以前は次の 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 を使用する場合にはファンクション リファレンスとして有用です。

2. Microsoft(R) Excel デベロッパーズ キット

Microsoft Excel デベロッパーズ キットは、主に Excel 5.0 を使用してアプリケーションおよび Excel 5.0 用のアドイン プログラムを開発するソフトウェア開発者の方々を対象に、必要な情報を提供します。C を既に理解されていて、Excel 5.0 および VBA または Excel 4.0 マクロを熟知されていることが前提となっています。
      書籍名 : Microsoft Excel デベロッパーズ キット
      ISBN   : 4-7561-1007-X
      著者   : Microsoft Corporation
      翻訳   : アスキー テクライト
      定価   : 6,800 円 (本体 6,602 円)
      発行所 : 株式会社アスキー
               〒 151-24 東京都渋谷区代々木 4 丁目 33 番 10 号
本書の内容に関するご質問は、株式会社アスキー 第一テクライト編集部まで、かならず封書 (返信用切手同封のこと) にてお願いいたします。なお、本書の範囲を越える質問に関しては、お答えできません。

II. 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 の「プログラムの簡単さ」という大きなメリットと引き換えになったデメリットです。

III. プログラミング テクニックを修得するには

すべてのプログラミング言語に共通して言えることですが、技術力やプログラミングテクニックはプログラマーが自分自身で身に付けるものであり、第三者が与えることができるものではありません。しかし、Windows 用アプリケーションの開発は高度な技術力と多くの情報を必要とします。以下はこれらの技術力を修得したり技術情報を取得する方法を説明しています。

1. Windows SDK からプログラミング テクニックを学ぶ

Windows SDK に記載されている仕様やプログラミング手法、サンプル プログラム等は必ず修得しなければなりません。数千ページに及ぶ情報の修得は簡単ではありませんがこれは最も基本的で、最も重要な作業です。

2. マイクロソフト デベロッパー ネットワークから技術情報を取得する

マイクロソフト デベロッパー ネットワーク (以下 MSDN) は、米国マイクロソフト本社からの英文の技術資料、サンプル プログラム、障害情報が豊富に掲載されています。MSDN に記載されている情報には多くのプログラミング テクニックも含まれています。
マイクロソフト デベロッパー ネットワークについての資料請求はマイクロソフト デベロッパー ネットワーク事務局 (電話 03-5600-5033、FAX 03-5600-5035) へお問い合わせください。

3. プログラミング セミナーに参加する

VBA をはじめとして、いくつかの弊社言語製品は他社によるセミナーが行われています。これらのセミナーを利用して VBA を修得する効率を向上させることも可能です。VBA のセミナーを開催している ATC (マイクロソフト認定技術教育センター) 各社様の情報のご入手には、「マイクロソフト FAX 情報サービス (03-5454-8100、BOX 番号 20200) 」をご利用下さい。
また、セミナー内容、詳しい日時、場所、料金等のお問い合わせは、直接主催会社までお問い合わせください。

IV. オフィシャル ユーザー サポート窓口からのお願い

基本的にはプログラミング テクニックやマクロ作成のアドバイス、コンサルティングはサポート窓口で行う内容ではありません。一つの機能を実現させるための手法、アルゴリズムおよびコーディング テクニックは一つとは限りませんし、サポートスタッフが提供する情報が必ずしも最適であるという保証はありません。このようなお客様固有の問題は弊社のサポート範囲外とさせていただきます。なお、普遍性の高い情報に関してはサポート情報で提供しています。

1. Windows API に関連した Excel 5.0 のマクロのサポート

オフィシャル ユーザー サポートでは、プログラム中から Windows API を呼び出すための一般的な Declare 宣言の記述方法はサポートします。しかし、個々の Windows API における宣言方法や Windows API を用いたプログラミング テクニックおよびデバッグといったお客様固有の問題は、誠に申し訳ございませんが弊社のサポート範囲外とさせていただきます。

Keywords: KBHOWTO KB402466
Technology: kbExcel500 kbExcelSearch kbExcelWinSearch

inserted by FC2 system