次の方法で共有


Word で組み込みのダイアログ ボックスをプログラムで使用する

Microsoft Office Word の作業中に、ユーザー入力用のダイアログ ボックスを表示しなければならない場合があります。 独自のものを作成することもできますが、Word の組み込みダイアログ ボックスを使用する方法もあります。これらは、Application オブジェクトの Dialogs コレクションで公開されます。 これにより、200 を超える組み込みダイアログ ボックスにアクセスできます。これらは列挙として表されます。

適用対象: このトピックの情報は、Word のドキュメント レベルのプロジェクトおよび VSTO アドインのプロジェクトに適用されます。 詳細については、「Office アプリケーションおよびプロジェクトの種類別の使用可能な機能」を参照してください。

ダイアログ ボックスを表示する

ダイアログ ボックスを表示するには、WdWordDialog 列挙のいずれかの値を使用して、表示するダイアログ ボックスを表す Dialog オブジェクトを作成します。 その後、Dialog オブジェクトの Show メソッドを呼び出します。

次のコード例では、[ファイルを開く] ダイアログ ボックスを表示する方法を示します。 このコード例を使用するには、プロジェクトの ThisDocument または ThisAddIn クラスからコードを実行します。

Word.Dialog dlg = Application.Dialogs[Word.WdWordDialog.wdDialogFileOpen];
dlg.Show();

遅延バインディングによって使用できるダイアログ ボックスのメンバーにアクセスする

Word のダイアログ ボックスのプロパティとメソッドの一部は、遅延バインディングを通じてのみ使用できます。 Option Strict がオンになっている Visual Basic プロジェクトでは、これらのメンバーにアクセスするために、リフレクションを使用する必要があります。 詳細については、「Office ソリューションの遅延バインディング」を参照してください。

次のコード例では、Option Strict がオフになっている Visual Basic プロジェクトで、あるいは .NET Framework 4 または .NET Framework 4.5 を対象とする Visual C# プロジェクトで、[ファイルを開く] ダイアログ ボックスの Name プロパティを使用する方法を示します。 このコード例を使用するには、プロジェクトの ThisDocument または ThisAddIn クラスからコードを実行します。

dynamic dialog = Application.Dialogs[Word.WdWordDialog.wdDialogFileOpen];
dialog.Name = "Testing";
dialog.Show();
MessageBox.Show(dialog.Name);

次のコード例では、Option Strict がオンになっている Visual Basic プロジェクトで、[ファイルを開く] ダイアログ ボックスの Name プロパティに、リフレクションを使用してアクセスする方法を示しています。 このコード例を使用するには、プロジェクトの ThisDocument または ThisAddIn クラスからコードを実行します。

Dim dlg As Word.Dialog = Application.Dialogs(Word.WdWordDialog.wdDialogFileOpen)
Dim dlgType As Type = GetType(Word.Dialog)

' Set the Name property of the dialog box.
dlgType.InvokeMember("Name", _
    Reflection.BindingFlags.SetProperty Or _
        Reflection.BindingFlags.Public Or _
        Reflection.BindingFlags.Instance, _
    Nothing, dlg, New Object() {"Testing"}, _
    System.Globalization.CultureInfo.InvariantCulture)

' Display the dialog box.
dlg.Show()

' Show the Name property.
MessageBox.Show(dlgType.InvokeMember("Name", _
    Reflection.BindingFlags.GetProperty Or _
        Reflection.BindingFlags.Public Or _
        Reflection.BindingFlags.Instance, _
    Nothing, dlg, Nothing, _
    System.Globalization.CultureInfo.InvariantCulture))