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

概要

この資料では、コンポーネント オブジェクト モデル (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 ニュースグループを参照してください。

次のマイクロソフト Web サイトの Visual C++ .NET Support Center も参照してください。

プロパティ

文書番号:307473 - 最終更新日: 2007/06/14 - リビジョン: 1

フィードバック