Como adicionar um botão a um documento do Word e atribuir seu evento Click em tempo de execução

Resumo

Este artigo demonstra como você pode usar uma macro do Microsoft Visual Basic for Applications para adicionar programaticamente um controle a um documento do Microsoft Word e adicionar um manipulador de eventos Click a esse controle.

Informações adicionais

As etapas a seguir ilustram como você pode criar uma macro do Word que adicionará um controle a um documento e atribuirá o evento Click desse controle em tempo de execução. As etapas são para o Word. No entanto, você pode aplicar os mesmos conceitos para manipular programaticamente controles em pastas de trabalho do Microsoft Excel.

Observação

A capacidade de manipular o Projeto do Visual Basic de um documento do Microsoft Office em tempo de execução requer uma referência à biblioteca de extensibilidade do Microsoft Visual Basic for Applications.

Etapas para criar o exemplo

  1. Inicie um novo documento no Word.

  2. Pressione Alt+F11 para ir para o Editor do Visual Basic.

  3. No menu Ferramentas, clique em Referências.

  4. Selecione a referência para Extensibilidade Visual Basic for Applications Microsoft.

  5. Insira um novo módulo e adicione o exemplo de código a seguir.

    Sub Test()
    
    'Add a command button to a new document
    Dim doc As Word.Document
    Dim shp As Word.InlineShape
    Set doc = Documents.Add
    
    Set shp = doc.Content.InlineShapes.AddOLEControl(ClassType:="Forms.CommandButton.1")
    shp.OLEFormat.Object.Caption = "Click Here"
    
    'Add a procedure for the click event of the inlineshape
    '**Note: The click event resides in the This Document module
    Dim sCode As String
    sCode = "Private Sub " & shp.OLEFormat.Object.Name & "_Click()" & vbCrLf & _
            "   MsgBox ""You Clicked the CommandButton""" & vbCrLf & _
            "End Sub"
    doc.VBProject.VBComponents("ThisDocument").CodeModule.AddFromString sCode
    
    End Sub
    
  6. Execute a macro "Testar".

  7. Depois que a macro "Test" terminar de ser executada, você verá um novo controle CommandButton em um novo documento. Quando você clica no controle CommandButton , o evento Click do controle é acionado.

Notas adicionais para o Word 2002 e o Word 2003

Por padrão, o acesso a um projeto VBA do Word está desabilitado. Quando desabilitado, o código acima pode gerar o erro de tempo de execução '6068', "O acesso programático ao Projeto do Visual Basic não é confiável". Para obter mais informações sobre esse erro e como você pode corrigi-lo, clique no seguinte número de artigo para exibir o artigo na Base de Dados de Conhecimento Microsoft:

O acesso programático 282830 ao projeto VBA do Office foi negado