Controlar um aplicativo do Microsoft Office a partir de outro

Se você deseja executar código em um aplicativo do Microsoft Office que trabalhe com os objetos de um outro aplicativo, siga esses passos.

Para executar o código

  1. Defina uma referência à biblioteca de tipos do outro aplicativo na caixa de diálogo Referências (menu Ferramentas). Em seguida, os objetos, as propriedades e os métodos aparecerão no pesquisador de objetos e a sintaxe será verificada durante a compilação. Você também pode obter ajuda contextual.

  2. Declare variáveis de objeto que se refiram aos objetos de outro aplicativo como tipos específicos. Qualifique cada tipo com o nome do aplicativo que está fornecendo o objeto. Por exemplo, a instrução a seguir declara uma variável que aponta para um documento do Microsoft Word e outra que se referirá a uma pasta de trabalho do Microsoft Excel.

      Dim appWD As Word.Application, wbXL As Excel.Workbook
    

    Nota Você deve seguir as etapas anteriores se quiser que seu código esteja vinculado antecipadamente.

  3. Use a função CreateObject com Identificadores de programação OLE do objeto do outro aplicativo com o qual você deseja trabalhar, conforme mostrado no exemplo a seguir. Para ver a sessão do outro aplicativo, defina a propriedade Visible como True.

      Dim appWD As Word.Application 
    
    Set appWD = CreateObject("Word.Application") 
    appWd.Visible = True
    
  4. Aplique propriedades e métodos ao objeto contido na variável. Por exemplo, a instrução seguinte cria um novo documento do Word.

    Dim appWD As Word.Application 
    
    Set appWD = CreateObject("Word.Application") 
    appWD.Documents.Add
    
  5. Quando tiver terminado de trabalhar com o outro aplicativo, use o método Quit para fechá-lo e defina sua variável de objeto como Nothing para liberar a memória que ele esteja usando, como mostrado no exemplo a seguir.

    appWd.Quit 
    Set appWd = Nothing
    

Código de exemplo fornecido por: Bill Jelen, MrExcel.com O exemplo de código a seguir cria um novo arquivo de Word do Microsoft Office para cada linha de dados em uma planilha.

' You must pick Microsoft Word Object Library from Tools>References
' in the VB editor to execute Word commands.
Sub ControlWord()
    Dim appWD As Word.Application
    ' Create a new instance of Word and make it visible
    Set appWD = CreateObject("Word.Application.12")
    appWD.Visible = True

    ' Find the last row with data in the spreadsheet
    FinalRow = Range("A9999").End(xlUp).Row
    For i = 1 To FinalRow
        ' Copy the current row
        Worksheets("Sheet1").Rows(i).Copy
        ' Tell Word to create a new document
        appWD.Documents.Add
        ' Tell Word to paste the contents of the clipboard into the new document.
        appWD.Selection.Paste
        ' Save the new document with a sequential file name.
        appWD.ActiveDocument.SaveAs Filename:="File" & i
        ' Close the new Word document.
        appWD.ActiveDocument.Close
    Next i
    ' Close the Word application.
    appWD.Quit
End Sub

Código de exemplo fornecido por: Dennis Wallentin, VSTO & .NET & Excel Este exemplo usa os valores de células de um intervalo nomeado, W_Data, que contém três valores e insere esses valores em um documento Word. Os valores são inseridos em locais com indicador chamados td1, td2 e td3. Para executar este exemplo, você deverá ter um intervalo chamado W_Data que contém três valores em Planilha1 na pasta de trabalho. Você deve ter um documento do Word chamado Test.docx salvo no mesmo local da pasta de trabalho do Excel, e o documento do Word deve ter três indicadores denominados td1, td2 e td3.

' You must pick Microsoft Word Object Library from Tools>References
' in the Visual Basic editor to execute Word commands.

Option Explicit

Sub Add_Single_Values_Word()
Dim wdApp As Word.Application
Dim wdDoc As Word.Document
Dim wdRange1 As Word.Range
Dim wdRange2 As Word.Range
Dim wdRange3 As Word.Range

Dim wbBook As Workbook
Dim wsSheet As Worksheet

Dim vaData As Variant

Set wbBook = ThisWorkbook
Set wsSheet = wbBook.Worksheets("Sheet1")

vaData = wsSheet.Range("W_Data").Value

' Instantiate the Word Objects.
Set wdApp = New Word.Application
Set wdDoc = wdApp.Documents.Open(wbBook.Path & "\Test.docx")

With wdDoc
    Set wdRange1 = .Bookmarks("td1").Range
    Set wdRange2 = .Bookmarks("td2").Range
    Set wdRange3 = .Bookmarks("td3").Range
End With

' Write values to the bookmarks.
wdRange1.Text = vaData(1, 1)
wdRange2.Text = vaData(2, 1)
wdRange3.Text = vaData(3, 1)

With wdDoc
    .Save
    .Close
End With

wdApp.Quit

' Release the objects from memory.
Set wdRange1 = Nothing
Set wdRange2 = Nothing
Set wdRange3 = Nothing
Set wdDoc = Nothing
Set wdApp = Nothing

End Sub

Sobre os colaboradores

MVP Bill Jelen é autor de mais de duas dúzias de livros sobre o Microsoft Excel. Ele é um convidado regular na TechTV com Leo Laporte, e é o anfitrião do MrExcel.com, que inclui mais de 300.000 perguntas e respostas sobre o Excel.

Dennis Wallentin é o autor do VSTO & .NET & Excel, um blog que se concentra em soluções .NET Framework para Excel e Serviços do Excel. Dennis vem desenvolvendo soluções Excel há mais de 20 anos e também é coautor de "Desenvolvimento do Excel Profissional: O Guia Definitivo para o Desenvolvimento de Aplicativos Usando o Microsoft Excel, VBA e .NET (2ª Edição)".

Suporte e comentários

Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.