Compartilhar via


Usar programaticamente caixas de diálogo do Word no modo oculto

Você pode executar operações complexas com uma chamada de método invocando as caixas de diálogo internas no Microsoft Office Word sem exibi-las ao usuário. Você pode fazer isso usando o ExecuteDialog método do objeto sem chamar o Display método.

Aplica-se a: As informações neste tópico se aplicam a projetos de nível de documento e projetos de suplemento VSTO para Word. Para obter mais informações, consulte Recursos disponíveis por aplicativo e tipo de projeto do Office.

Exemplos

Os exemplos de código a seguir demonstram como usar a caixa de diálogo Configurar Página no modo oculto para definir várias propriedades de configuração de página sem entrada do usuário. Os exemplos usam um objeto para configurar um Dialog tamanho de página personalizado. As configurações específicas para configuração de página, como a margem superior, a margem inferior e assim por diante, estão disponíveis como propriedades de limite tardio do Dialog objeto. Essas propriedades são criadas dinamicamente pelo Word em tempo de execução.

O exemplo a seguir demonstra como executar essa tarefa em projetos do Visual Basic onde Option Strict está desativado e em projetos do Visual C# que visam o .NET Framework 4. Nesses projetos, você pode usar recursos de vinculação tardia nos compiladores Visual Basic e Visual C#. Para usar este exemplo, execute-o a ThisDocument partir da classe ou ThisAddIn em seu projeto.

dynamic dialog = Application.Dialogs[Word.WdWordDialog.wdDialogFilePageSetup];
dialog.PageWidth = "3.3\"";
dialog.PageHeight = "6\"";
dialog.TopMargin = "0.71\"";
dialog.BottomMargin = "0.81\"";
dialog.LeftMargin = "0.66\"";
dialog.RightMargin = "0.66\"";
dialog.HeaderDistance = "0.28\"";
dialog.Orientation = "0";
dialog.DifferentFirstPage = "0";
dialog.FirstPage = "0";
dialog.OtherPages = "0";

// Apply these settings only to the current selection with this line of code:
dialog.ApplyPropsTo = "3";

// Apply the settings.
dialog.Execute();

O exemplo a seguir demonstra como executar essa tarefa em projetos do Visual Basic onde Option Strict está ativado. Nesses projetos, você deve usar a reflexão para acessar as propriedades vinculadas tardiamente. Para usar este exemplo, execute-o a ThisDocument partir da classe ou ThisAddIn em seu projeto.

Friend Sub PageSetupDialogHidden()
    Dim dialog As Word.Dialog = Application.Dialogs.Item(Word.WdWordDialog.wdDialogFilePageSetup)

    ' Set the properties of the dialog box.
    ' ControlChars.Quote() is used to represent the symbol for inches.
    InvokeHelper(dialog, "PageWidth", "3.3" & ControlChars.Quote)
    InvokeHelper(dialog, "PageHeight", "6" & ControlChars.Quote)
    InvokeHelper(dialog, "TopMargin", "0.71" & ControlChars.Quote)
    InvokeHelper(dialog, "BottomMargin", "0.81" & ControlChars.Quote)
    InvokeHelper(dialog, "LeftMargin", "0.66" & ControlChars.Quote)
    InvokeHelper(dialog, "RightMargin", "0.66" & ControlChars.Quote)
    InvokeHelper(dialog, "HeaderDistance", "0.28" & ControlChars.Quote)
    InvokeHelper(dialog, "Orientation", "0")
    InvokeHelper(dialog, "DifferentFirstPage", "0")
    InvokeHelper(dialog, "FirstPage", "0")
    InvokeHelper(dialog, "OtherPages", "0")

    ' Apply these settings only to the current selection with this line of code:
    InvokeHelper(dialog, "ApplyPropsTo", "3")

    ' Apply the settings.
    dialog.Execute()
End Sub

Private Shared Sub InvokeHelper(ByVal dialog As Word.Dialog, ByVal member As String, ByVal value As String)
    Dim dialogType As System.Type = GetType(Word.Dialog)

    ' Set the appropriate property of the dialog box.
    dialogType.InvokeMember(member,
        System.Reflection.BindingFlags.SetProperty Or
            System.Reflection.BindingFlags.Public Or
            System.Reflection.BindingFlags.Instance,
        Nothing, dialog, New Object() {value},
        System.Globalization.CultureInfo.InvariantCulture)
End Sub