Visual C++ .NET から Office オートメーション用のタイプ ライブラリを使用する方法

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

概要

この資料では、コンポーネント オブジェクト モデル (COM) に準拠するアプリケーションのオートメーション クライアントとして動作する Visual C++ .NET プロジェクトをビルドする方法について説明します。この資料のサンプルでは、Office コンポーネント用のクラス ラッパーを持つ MFC (Microsoft Foundation Class) を使用しています。

詳細

以下の手順は、単純なオートメーション クライアントをビルドする方法を説明しています。この方法は、主に 3 つ手順で構成されています。
  1. オートメーション クライアントを作成する
  2. コードを追加して Microsoft Excel をオートメーションで起動する
  3. オートメーション クライアントを実行する
最初の手順の「」を使用して、使用しているオートメーション サーバーとは無関係に、新しいオートメーション クライアントを作成できます。2 番目の手順の「コードを追加して Microsoft Excel をオートメーションで起動する」は、オートメーション サーバー固有の手順です。

オートメーション クライアントを作成する

  1. Microsoft Visual Studio .NET を起動します。[ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。Visual C++ のプロジェクトの種類から [MFC アプリケーション] をクリックし、プロジェクトに AutoProject という名前を付けます。
  2. MFC アプリケーション ウィザードが表示されたら、[アプリケーションの種類] タブをクリックして、アプリケーションの種類を [ダイアログ ベース] に設定し、[完了] をクリックします。
  3. [IDD_AUTOPROJECT_DIALOG] ダイアログ ボックスを以下のように変更します。
    1. テキスト コントロール (IDC_STATIC) と [キャンセル] ボタンを削除します。
    2. [OK] ボタンの ID を "IDRUN" に変更して、Caption プロパティを "実行" に変更します。
  4. オートメーション サーバーのタイプ ライブラリからクラス ラッパーを次のように作成します。
    1. ソリューション エクスプローラで、[AutoProject] を右クリックし、[追加] をポイントし、[クラスの追加] をクリックします。
    2. [TypeLib からの MFC クラス] をクリックし、[開く] をクリックします。
    3. [クラスの追加元] の [レジストリ] をクリックし、使用中のオートメーション サーバーのタイプ ライブラリを検索して、登録します。

      この例では、Microsoft Excel 10.0 Type Library (Microsoft Excel 2002 の場合) または Microsoft Excel 9.0 Type Library (Microsoft Excel 2000 の場合) を選択します。
    4. 一覧から必要なインターフェイスをクリックし、不等号 (>) をクリックして、MFC がラッパーを作成するインターフェイスの一覧に、クリックしたインターフェイスを追加します。すべてのインターフェイスを追加した後、[完了] をクリックします。

      この例では、_Application インターフェイスのみが必要となります。

      重要 : 選択したタイプ ライブラリに多くのインターフェイスがある場合、MFC が選択したインターフェイスごとに異なるヘッダー ファイルを生成するため、使用する予定のインターフェイスのみを選択します。選択したインターフェイスをできるだけ少なくすることで、ファイルの生成とコンパイルの実行中に不必要なオーバーヘッドを避けることができます。
  5. COM サービスのライブラリを読み込んで有効にするには、CAutoProjectApp::InitInstance 関数に次のコードを追加します。
    if(!AfxOleInit())  // Your addition starts here.
    {
      AfxMessageBox("Cannot initialize COM dll");
      return FALSE;
      // End of your addition.
    }
    
    AfxEnableControlContainer();
    					
  6. オートメーション サーバーのタイプ ライブラリでインターフェイスから生成されるヘッダー ファイルごとに include ディレクティブを追加します。AutoProjectDlg.cpp の先頭の、Stdafx.h の include ステートメントの後にこれらのディレクティブを追加します。

    この例では、CApplication.h ヘッダー ファイルの include を追加します。これは、_Application インターフェイスに対して生成されます。
          #include "stdafx.h"
          #include "CApplication.h"
    					

コードを追加して Microsoft Excel をオートメーションで起動する

[IDD_AUTOPROJECT_DIALOG] ダイアログ ボックスで、[実行] を右クリックし、ショートカット メニューの [イベント ハンドラの追加] をクリックします。イベント ハンドラ ウィザードで、[メッセージの種類] の [BN_CLICKED] を選択し、[追加して編集] をクリックします。コードを次のように変更して、ハンドラ内で Excel をオートメーションで起動します。
void CAutoProjectDlg::OnBnClickedRun()
{
   CApplication app;  // app is the Excel _Application object

   // Start Excel and get Application object.

   if(!app.CreateDispatch("Excel.Application"))
   {
      AfxMessageBox("Cannot start Excel and get Application object.");
      return;
   }
   else
   {
      //Make the application visible and give the user control of
      //Microsoft Excel.
      app.put_Visible(TRUE);
      app.put_UserControl(TRUE);
   }
} 
				

オートメーション クライアントを実行する

F5 キーを押し、オートメーション クライアントをビルドして実行します。ダイアログ ボックスが表示されたら、[実行] をクリックします。オートメーション クライアントが Excel を起動して、アプリケーションを表示します。ユーザーがアプリケーションを制御するようになるので、オートメーション クライアントが終了しても、Excel の実行は継続します。

その他の注意点

タイプ ライブラリからプロジェクトにクラスを追加した後、これらのクラスがプロジェクトのクラス ビューに表示されます。クラス ビューで、そのクラスをダブルクリックして、そのクラスのメソッドを確認します。その後、メソッドをダブルクリックして、その関数の定義を MFC ラッパーの実装ファイルに表示できます。戻り値の型を確認する場合、または関数の実装を変更する必要がある場合は、メンバ関数の定義を再表示できます。

上記の手順では、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 Office 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
Microsoft Office Access 2007 Msacc.olb
Microsoft Office Excel 2007 Excel.exe
Microsoft Office Graph 2007 Graph.exe
2007 Microsoft Office MSO.dll
Microsoft Office Outlook 2007 MSOutl.olb
Microsoft Office PowerPoint 2007 MSPpt.olb
Microsoft Office Word 2007 MSWord.olb

: 上記のタイプ ライブラリのデフォルトの場所は以下のとおりです。
元に戻す全体を表示する
Office のバージョンパス
Office 97 C:\Program Files\Microsoft Office\Office
Office 2000 C:\Program Files\Microsoft Office\Office
Office XP C:\Program Files\Microsoft Office\Office10
Office 2003 C:\Program Files\Microsoft Office\Office11
2007 Office C:\Program Files\Microsoft Office\Office12

Dao350.dll と Dao360.dll のデフォルトの場所は、C:\Program Files\Common Files\Microsoft Shared\Dao です。

関連情報

Visual C++ .NET に関する一般的な情報については、次の Usenet ニュースグループを参照してください。
http://www.microsoft.com/japan/msdn/newsgroups/default.mspx?dg=microsoft.public.jp.dotnet.languages.vc
次のマイクロソフト Web サイトの Visual C++ .NET Support Center も参照してください。
http://support.microsoft.com/default.aspx?xmlid=fh%3BEN-US%3Bvcnet

プロパティ

文書番号: 307473 - 最終更新日: 2007年6月14日 - リビジョン: 8.0
この資料は以下の製品について記述したものです。
  • Microsoft Visual C++ .NET 2002 Standard Edition
  • Microsoft Foundation Class Library 4.2
  • Microsoft Office Professional 2007
  • Microsoft Office Professional Edition 2003
  • Microsoft Office XP Developer Edition
  • Microsoft Office 2000 Developer
  • Microsoft Office 97 Developer Edition
キーワード:?
kbexpertiseinter kbautomation kbhowto kbnewsgrouplink KB307473
"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