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

[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