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
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.
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.
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
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
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
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)".
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.