다음을 통해 공유


Word에서 프로그래밍 방식으로 기본 제공 대화 상자 사용

Microsoft Office Word로 작업할 때 사용자 입력을 위한 대화 상자를 표시해야 하는 경우가 있습니다. 직접 만들 수 있지만 Application 개체의 Dialogs 컬렉션에 노출되는 Word의 기본 제공 대화 상자를 사용하는 방법을 사용할 수도 있습니다. 이렇게 하면 열거형으로 표시되는 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# 프로젝트에서 파일 열기 대화 상자의 이름 속성을 사용하는 방법을 보여 줍니다. 이 예제를 사용하려면 프로젝트의 ThisDocument 또는 ThisAddIn 클래스에서 실행합니다.

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

다음 코드 예제에서는 리플렉션을 사용하여 Option Strict가 켜져 있는 Visual Basic 프로젝트에서 파일 열기 대화 상자의 이름 속성에 액세스하는 방법을 보여 줍니다. 이 예제를 사용하려면 프로젝트의 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))