MFC およびタイプ ライブラリを使用してオートメーション プロジェクトを作成する方法

文書翻訳 文書翻訳
文書番号: 178749 - 対象製品
この記事は、以前は次の ID で公開されていました: JP178749
すべて展開する | すべて折りたたむ

目次

概要

この資料では、Microsoft Office アプリケーションなどの COM 準拠アプリケーションで、コンポーネントの統合を自動化する方法について詳しく説明します。

詳細

次の手順は、MFC プロジェクトの作成方法を示したものです。この例では、Microsoft Excel を自動化します。最初の 8 つの手順は、あらゆるプロジェクトに使用できます。他のアプリケーションを対象とする場合は、手順 9. 〜 15. を変更します。

オートメーション プロジェクトの作成

  1. Microsoft Developer Studio で、新しい "MFC AppWizard (exe)" プロジェクトを作成し、"AutoProject" という名前を付けます。
  2. MFC AppWizard のステップ 1 で、アプリケーションの種類として [ダイアログ ベース] をクリックし、[終了] をクリックします。

    [新規プロジェクト情報] ダイアログ ボックスが開き、作成するクラスが示されます。
          アプリケーション: CAutoProjectApp クラス ; AutoProject.h , AutoProject.cpp
          ダイアログ: CAutoProjectDlg クラス ; AutoProject.h , AutoProjectDlg.cpp
    						
    [OK] をクリックしてプロジェクトを作成します。
  3. Visual Studio のデザイン/編集領域に、ダイアログ ボックス "IDD_AUTOPROJECT_DIALOG" が表示されます。次の 2 つの手順を実行して、このダイアログ ボックスを変更します。
  4. Label コントロール (IDC_STATIC) と Cancel ボタン (IDCANCEL) を削除します。
  5. OK ボタンの名前を "IDRUN" に、キャプションを "Run" に変更します。AutoProject.rc ダイアログ ボックスのデザイン フォームを閉じます。
  6. [表示] メニューの [ClassWizard] をクリックします (または Ctrl + W キーを押します)。
  7. [メッセージ マップ] タブをクリックします。[オブジェクト ID] ボックスの一覧の [IDRUN] をクリックし、[メッセージ] ボックスの一覧の [BN_CLICKED] をクリックします。[関数の追加] をクリックし、"OnRun" という関数名をそのまま使用します。[OK] をクリックして ClassWizard を閉じます。

    注 : この手順では、AutoProjectDLG.h という名前のヘッダー ファイルに、関数メンバ "OnRun();" の宣言が追加されます。また、AutoProjectDLG.cpp という名前のファイルに、CAutoProjectDlg::OnRun() という名前の空のスケルトン メッセージ ハンドラ関数が追加されます。
  8. [表示] メニューの [ClassWizard] をクリックします (または Ctrl + W キーを押します)。
  9. [オートメーション] タブをクリックします。[クラスの追加] をクリックし、[タイプ ライブラリから] をクリックします。自動化するアプリケーションのオブジェクト ライブラリを探して選択します。たとえば、Excel 97 を自動化する場合、Microsoft Excel 8.0 オブジェクト ライブラリ (デフォルトの場所は C:\Program Files\Microsoft Office\Office\Excel8.olb) を選択します。

    Microsoft Excel 2000 を自動化する場合、Microsoft Excel 9.0 オブジェクト ライブラリ (デフォルトの場所は C:\Program Files\Microsoft Office\Office\Excel9.olb) を選択します。

    Microsoft Excel 2002 および Microsoft Office Excel 2003 を自動化する場合、オブジェクト ライブラリは Excel.exe ファイルに埋め込まれています。Office 2002 の Excel.exe のデフォルトの場所は、C:\program Files\Microsoft Office\Office10\Excel.exe、Office 2003 の Excel.exe のデフォルトの場所は、C:\program Files\Microsoft Office\Office11\Excel.exe です。適切なオブジェクト ライブラリを選択したら、[開く] をクリックします。[クラスの確認] ボックスの一覧ですべてのクラスを選択し、[OK] をクリックします。

    注 : [クラスの確認] ダイアログ ボックスの一覧には、Microsoft Excel タイプ ライブラリに含まれるすべての IDispatch インターフェイス (実質的にクラスと同じもの) が表示されます。ダイアログ ボックスの下半分を見ると、Excel8.cpp という名前のインプリメント ファイルに ColeDispatchDriver() から派生して生成されたクラス ラッパーが含まれ、対応する宣言ヘッダー ファイルの名前は Excel8.h になっています (Excel 2002 および Excel 2003 の場合、これらのファイル名は Excel.cpp および Excel.h です)。
  10. [OK] をクリックして [MFC ClassWizard] ダイアログ ボックスを閉じます。
  11. CAutoProjectApp::InitInstance() 関数に以下のコードを追加します。これは、COM サービス ライブラリを読み込み、有効にする関数です。
          BOOL CAutoProjectApp::InitInstance()
          {
             if(!AfxOleInit())  // この行から追加
             {
                AfxMessageBox("Could not initialize COM dll");
                return FALSE;
             }                 // この行まで
             AfxEnableControlContainer();
          .
          .
          .
          }
    					
  12. AutoProject.cpp プログラム ファイルの先頭の #include ステートメントに、以下の行を追加します。
          #include <afxdisp.h>
    					
  13. AutoProjectDlg.cpp プログラム ファイルの先頭の stdafx.h の include ステートメントの後に、excel8.h の include ステートメントを追加します。
          #include "stdafx.h"
          #include "excel8.h" // Excel 2002 および Excel 2003 の場合は excel.h
    					
  14. 以下のように、CAutoProjectDlg::OnRun() にオートメーション コードを追加します。
          void CAutoProjectDlg::OnRun()
          {
              _Application app;  // app is the Excel _Application object
              // Start Excel and get Application object...
             if(!app.CreateDispatch("Excel.Application"))
             {
                AfxMessageBox("Couldn't start Excel.");
             }
             else
             {
                //Make Excel Visible and display a message
              app.SetVisible(TRUE);
              AfxMessageBox ("Excel is Running!");
             }
          }
    					
  15. プロジェクトをビルドして実行します。

    結果 : ダイアログ ボックスの [Run] ボタンをクリックすると、Microsoft Excel が起動します。[AutoProject] ダイアログ ボックスをアクティブにして、メッセージ ボックスを閉じます。CAutoProjectDlg::OnRun() 関数が終了すると、アプリケーション変数が有効範囲外になるため、Microsoft Excel が終了します。

その他の注意点

タイプ ライブラリからプロジェクトにクラスを追加 (前述の手順 9.) すると、プロジェクトに多数のクラスが追加されます。ClassView でクラスをダブルクリックすると、そのクラスのメンバ関数が表示されます。メンバ関数をダブルクリックすると、Excel8.cpp におけるその関数の定義が表示されます。

メンバ関数の定義を参照する必要があるのは、メンバ関数の戻り値の型を確認する場合や、関数の実装を変更する場合です。関数の定義を変更した場合は、必ず Excel8.h ファイル内の宣言を変更してください。このとき、複数のクラスのメンバ関数に同じ名前が付けられている場合がある (GetApplication() など) ため、正しい関数の定義を変更するように注意します。

上記の手順は、Microsoft Excel を自動化する方法を示したものですが、他のアプリケーションの自動化にも同じ概念を適用できます。以下に、Microsoft Office アプリケーションのタイプ ライブラリのファイル名を示します。
   アプリケーション                           タイプ ライブラリ
   --------------------------------------------------
   Microsoft Access 97                   Msacc8.olb
   Microsoft Jet Database 3.5            DAO350.dll
   Microsoft Binder 97                   Msbdr8.olb
   Microsoft Excel 97                    Excel8.olb
   Microsoft Graph 97                    Graph8.olb
   Microsoft Office 97                   Mso97.dll
   Microsoft Outlook 97                  Msoutl97.olb
   Microsoft PowerPoint 97               Msppt8.olb
   Microsoft Word 97                     Msword8.olb
   Microsoft Access 2000                 Msacc9.olb
   Microsoft Jet Database 3.51           DAO360.dll
   Microsoft Binder 2000                 Msbdr9.olb
   Microsoft Excel 2000                  Excel9.olb
   Microsoft Graph 2000                  Graph9.olb
   Microsoft Office 2000                 Mso9.dll
   Microsoft Outlook 2000                Msoutl9.olb
   Microsoft PowerPoint 2000             Msppt9.olb
   Microsoft Word 2000                   Msword9.olb
   Microsoft Access 2002                 Msacc.olb
   Microsoft Excel 2002                  Excel.exe
   Microsoft Graph 2002                  Graph.exe
   Microsoft Office 2002                 MSO.dll
   Microsoft Outlook 2002                MSOutl.olb
   Microsoft PowerPoint 2002             MSPpt.olb
   Microsoft Word 2002                   MSWord.olb
   Microsoft Office Access 2003          Msacc.olb
   Microsoft Office Excel 2003           Excel.exe
   Microsoft Graph 2003                  Graph.exe
   Microsoft Office 2003                 MSO.dll
   Microsoft Office Outlook 2003         MSOutl.olb
   Microsoft Office PowerPoint 2003      MSPpt.olb
   Microsoft Office Word 2003            MSWord.olb
				
注 : Dao350.dll または Dao360.dll、および Microsoft Office 10 (MSO.dll) を除き、これらのタイプ ライブラリのデフォルトの場所は、C:\Program Files\Microsoft Office\Office (Office 2002 の場合は C:\...\Office10、Office 2003 の場合は C:\...\Office11) です。Dao350.dll/Dao360.dll のデフォルトの場所は、C:\Program Files\Common Files\Microsoft Shared\Dao です。MSO.dll のデフォルトの場所は、Office 2002 の場合は C:\Program Files\Common Files\Microsoft Shared\Office10、Office 2003 の場合は C:\Program Files\Common Files\Microsoft Shared\Office11 です。

関連情報

この資料では、ダイアログ ボックスを使用するプロジェクトを作成するための方法について説明しています。Microsoft Developer Studio 環境で VC++ プロジェクトを作成するプロセスに関するより一般的なドキュメントとしては、Visual Studio InfoView を使用してアクセスできる優れたチュートリアルがあります。このチュートリアルにアクセスするには、[ヘルプ] メニューの [検索] をクリックします。[検索] タブをクリックして次のように入力します。
プロジェクトの操作
[検索開始] をクリックします。「ホームページ : プロジェクトの操作」というトピックを選択して [表示] をクリックします。 Office アプリケーションの自動化についての関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
222101 [HOWTO] Office オブジェクト モデルに関するドキュメントの検索および使用方法
または、以下のマイクロソフト Web サイトを参照してください。
http://www.microsoft.com/japan/msdn/library/ja/dv_wrcore/html/wroriautomatingofficeapplications.asp

関連情報

この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 178749 (最終更新日 2004-07-15) を基に作成したものです。

この資料に含まれているサンプル コード/プログラムは英語版を前提に書かれたものをありのままに記述しており、日本語環境での動作は確認されておりません。

プロパティ

文書番号: 178749 - 最終更新日: 2005年6月10日 - リビジョン: 3.5
この資料は以下の製品について記述したものです。
  • Microsoft Foundation Class Library 4.2?を以下の環境でお使いの場合
    • Microsoft Visual C++ 5.0 Standard Edition
    • Microsoft Visual C++ 6.0 Service Pack 5
  • Microsoft Office XP Developer Edition
  • Microsoft Office 2000 Developer
キーワード:?
kbhowto kbinterop kbautomation KB178749
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com