次の方法で共有


ApplicationFactory.HasVstoObject メソッド

指定したネイティブなドキュメント オブジェクトに対して Microsoft.Office.Tools.Word.Document ホスト項目が作成されているかどうかを示す値を取得します。

名前空間:  Microsoft.Office.Tools.Word
アセンブリ:   Microsoft.Office.Tools.Word (Microsoft.Office.Tools.Word.dll 内)
  Microsoft.Office.Tools.Word.v4.0.Utilities (Microsoft.Office.Tools.Word.v4.0.Utilities.dll 内)

構文

'宣言
Function HasVstoObject ( _
    document As _Document _
) As Boolean
bool HasVstoObject(
    _Document document
)

パラメーター

戻り値

型 : System.Boolean
指定した Microsoft.Office.Interop.Word.Document オブジェクトに対して Microsoft.Office.Tools.Word.Document ホスト項目が作成されている場合は true。それ以外の場合は false。

解説

このメソッドをアプリケーション レベルのアドインで呼び出して、Word 文書を閉じたり保存したりする前に保持する必要のあるマネージ コントロールが存在するかどうかをテストできます。Word 文書にコントロールを保持する方法のサンプルについては、「Word Add-In Dynamic Controls Sample」を参照してください。

[!メモ]

document パラメーターの型は、Microsoft.Office.Interop.Word.Document の親インターフェイスである Microsoft.Office.Interop.Word._Document 型です。したがって、このメソッドは、Microsoft.Office.Interop.Word._DocumentMicrosoft.Office.Interop.Word.Document の両方の種類のオブジェクトを受け取ることができます。Word 文書を参照する場合は、Microsoft.Office.Interop.Word.Document を使用するのが一般的です。

次のコード例では、現在の文書に関連するホスト項目が存在するかどうかを確認し、存在する場合は、そのホスト項目を取得します。文書にマネージ コントロールが存在する場合は、ユーザーが文書を保存する際、マネージ コントロールは保持されないという内容の警告メッセージを表示します。この確認は、DocumentBeforeSave イベントのイベント ハンドラーを使って実行されます。このコードは、実行 ThisAddIn のクラスから、ターゲット .NET Framework 4 または .NET Framework 4.5を Word アドイン プロジェクトで使用します。

Private Sub Application_DocumentBeforeSave( _
    ByVal Doc As Microsoft.Office.Interop.Word.Document, _
    ByRef SaveAsUI As Boolean, _
    ByRef Cancel As Boolean) Handles Application.DocumentBeforeSave

    If Globals.Factory.HasVstoObject(Doc) = True Then
        Dim vstoDoc As Document = Globals.Factory.GetVstoObject(Doc)
        If vstoDoc.Controls.Count > 0 Then
            System.Windows.Forms.MessageBox.Show( _
                "The VSTO controls are not persisted when you save this document.", _
                "Controls Persistence", _
                System.Windows.Forms.MessageBoxButtons.OK, _
                System.Windows.Forms.MessageBoxIcon.Warning)
        End If
    End If
End Sub
void Application_DocumentBeforeSave(
    Microsoft.Office.Interop.Word.Document Doc, ref bool SaveAsUI, 
    ref bool Cancel)
{
    if (Globals.Factory.HasVstoObject(Doc) == true)
    {
        Document vstoDoc = Globals.Factory.GetVstoObject(Doc);
        if (vstoDoc.Controls.Count > 0)
        {
            System.Windows.Forms.MessageBox.Show(
                "The VSTO controls are not persisted when you save this document.",
                "Controls Persistence",
                System.Windows.Forms.MessageBoxButtons.OK,
                System.Windows.Forms.MessageBoxIcon.Warning);
        }
    }
}

.NET Framework セキュリティ

  • 直前の呼び出し元に対する完全な信頼。このメンバーは、部分的に信頼されているコードから使用することはできません。詳細については、「部分信頼コードからのライブラリの使用」を参照してください。

参照

関連項目

ApplicationFactory インターフェイス

Microsoft.Office.Tools.Word 名前空間

その他の技術情報

アプリケーション レベルのアドインにおける実行時の Word 文書や Excel ブックの拡張

ドキュメント レベルのカスタマイズのプログラミング

Word Add-In Dynamic Controls Sample