オートメーションを使用して、Visual C# .NET で Office ドキュメントのプロパティを取得および設定する方法

概要

この資料では、Microsoft Word 文書のプロパティを操作する Visual C# .NET のオートメーション クライアントを作成する方法を、例を挙げて紹介します。この資料のサンプル コードでは Word のオートメーションに限定して説明していますが、同様の手法を Microsoft Excel や Microsoft PowerPoint にも適用できます。

詳細

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

  1. Visual Studio .NET を起動します。
  2. [ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。[プロジェクトの種類] ボックスの一覧の [Visual C# プロジェクト] をクリックし、[テンプレート] ボックスの [Windows アプリケーション] をクリックし、[OK] をクリックします。デフォルトで Form1 が作成されます。
  3. Microsoft Word のオブジェクト ライブラリへの参照を追加します。これを行うには、以下の手順を実行します。
    1. [プロジェクト] メニューの [参照の追加] をクリックします。
    2. [COM] タブで Microsoft Word のオブジェクト ライブラリをクリックし、[選択] をクリックします。


      : Microsoft Office 2003 には、プライマリ相互運用機能アセンブリ (PIA) が含まれています。Microsoft Office XP の場合、PIA は含まれていませんが、PIA をダウンロードすることはできます。
      Office XP 用の PIA の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
      328912
      Microsoft Office XP 用の PIA (Primary Interop Assemblies) のダウンロード
    3. [参照の追加] ダイアログ ボックスで [OK] をクリックして、選択を確定します。選択したライブラリのラッパーを生成するかどうかを確認するメッセージが表示されたら、[はい] をクリックします。
  4. [表示] メニューの [ツールボックス] をクリックしてツールボックスを表示し、Form1 にボタンを追加します。
  5. [button1] をダブルクリックします。フォームのコード ウィンドウが表示されます。
  6. コード ウィンドウには、次のコードが表示されます。
    private void button1_Click(object sender, System.EventArgs e)
    {
    }
    これを次のコードで置き換えます。
    private void button1_Click(object sender, System.EventArgs e)
    {
    Word.Application oWord;
    Word._Document oDoc;
    object oMissing = Missing.Value;
    object oDocBuiltInProps;
    object oDocCustomProps;

    //Create an instance of Microsoft Word and make it visible.
    oWord = new Word.Application();
    oWord.Visible = true;

    //Create a new Document and get the BuiltInDocumentProperties collection.
    oDoc = oWord.Documents.Add(ref oMissing, ref oMissing, ref oMissing,
    ref oMissing);
    oDocBuiltInProps = oDoc.BuiltInDocumentProperties;
    Type typeDocBuiltInProps = oDocBuiltInProps.GetType();

    //Get the Author property and display it.
    string strIndex = "Author";
    string strValue;
    object oDocAuthorProp = typeDocBuiltInProps.InvokeMember("Item",
    BindingFlags.Default |
    BindingFlags.GetProperty,
    null,oDocBuiltInProps,
    new object[] {strIndex} );
    Type typeDocAuthorProp = oDocAuthorProp.GetType();
    strValue = typeDocAuthorProp.InvokeMember("Value",
    BindingFlags.Default |
    BindingFlags.GetProperty,
    null,oDocAuthorProp,
    new object[] {} ).ToString();
    MessageBox.Show( "The Author is: " + strValue,"Author" );

    //Set the Subject property.
    strIndex = "Subject";
    strValue = "The Subject";
    typeDocAuthorProp.InvokeMember("Item",
    BindingFlags.Default |
    BindingFlags.SetProperty,
    null,oDocBuiltInProps,
    new object[] {strIndex,strValue} );

    //Add a property/value pair to the CustomDocumentProperties collection.
    oDocCustomProps = oDoc.CustomDocumentProperties;
    Type typeDocCustomProps = oDocCustomProps.GetType();

    strIndex = "Knowledge Base Article";
    strValue = "Q303296";
    object[] oArgs = {strIndex,false,
    MsoDocProperties.msoPropertyTypeString,
    strValue};

    typeDocCustomProps.InvokeMember("Add",BindingFlags.Default |
    BindingFlags.InvokeMethod, null,
    oDocCustomProps, oArgs );

    MessageBox.Show("Select \"Properties\" from the File menu "
    + "to view the changes.\nSelect the Summary tab to view "
    + "the Subject property and the Custom tab to view the Knowledge"
    + "Base Article property.", "Check File Properties",
    MessageBoxButtons.OK,MessageBoxIcon.Information);
    }
  7. コード ウィンドウの最上部にスクロールし、using ディレクティブのリストの末尾に以下の行を追加します。
    using Microsoft.Office.Core;
    using Word = Microsoft.Office.Interop.Word;
    using System.Reflection;
  8. F5 キーを押してアプリケーションを実行します。
: DocumentProperties インターフェイスと DocumentProperty インターフェイスは遅延バインドが実行されるインターフェイスです。これらのインターフェイスを使用するには、IDispatch インターフェイスと同様に処理する必要があります。

関連情報

詳細については、次の Microsoft Developer Network Web サイトを参照してください。
Microsoft Office Development with Visual Studio

http://msdn2.microsoft.com/en-us/library/aa188489(office.10).aspx
関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。

303294 [HOWTO] Visual Basic .NET でオートメーションを使用して Office ドキュメントのプロパティを設定する方法
プロパティ

文書番号:303296 - 最終更新日: 2008/04/29 - リビジョン: 1

フィードバック