Macro do Excel para Word - Dicas do Excel

Índice

Obrigado a Jake que forneceu a pergunta sobre o Excel desta semana:

Como posso escrever uma macro que pegará os dados da planilha do Excel e criará um arquivo do Word para cada linha de dados?

Jake - que ótima ideia! Costumo ter resultados de vendas para toda a empresa e seria ótimo poder enviar a cada representante apenas suas informações em Word. Você poderia fazer isso no Word usando a mala direta, mas controlar o Word no Excel é uma perspectiva interessante. O exemplo a seguir é bastante simples, mas seria possível desenvolver esse conceito para fazer aplicativos bastante avançados.

Primeiro, vamos dar uma olhada em um conjunto de dados de amostra. Eu criei uma pasta de trabalho com duas planilhas - uma chamada Dados e outra chamada Modelo. A planilha de dados contém muitas linhas de dados. A planilha de modelo tem a estrutura do documento do Word que desejo criar. Nesse caso, vou querer copiar o nome da coluna A do banco de dados para a célula C4 no modelo. As colunas B: E do banco de dados irão nas células C10: C13.

Primeiro, vamos dar uma olhada em um conjunto de dados de amostra. Eu criei uma pasta de trabalho com duas planilhas - uma chamada Dados e outra chamada Modelo. A planilha de dados contém muitas linhas de dados. A planilha de modelo tem a estrutura do documento do Word que desejo criar. Nesse caso, vou querer copiar o nome da coluna A do banco de dados para a célula C4 no modelo. As colunas B: E do banco de dados irão nas células C10: C13.

A Folha de Dados
A Folha de Modelo

Inicie o Editor VB com alt-F11. Visto que queremos emitir comandos do Word aqui, vá para Ferramentas> Referências. Role para baixo para localizar "Microsoft Word 8" e marque a caixa ao lado para selecionar este item.

Para controlar o Word a partir do Excel, você precisa definir uma variável para representar o aplicativo Word. No exemplo abaixo, usei appWD. Para qualquer comando na macro do Excel que você deseja aplicar ao aplicativo Word, basta prefixar o comando com appWD. Na verdade, como nunca escrevi uma linha de código de macro do Word antes, fui para o Word, gravei as ações e copiei esse código para o Excel, adicionando o prefixo antes de cada linha.

Sub ControlWord() ' You must pick Microsoft Word 8.0 from Tools>References ' in the VB editor to execute Word commands. ' See VB Help topic "Controlling One Microsoft Office Application from Another" ' for more information. ' Originally published by www.MrExcel.com 2/28/1999 Dim appWD As Word.Application ' Create a new instance of Word & make it visible Set appWD = CreateObject("Word.Application.8") appWD.Visible = True Sheets("Data").Select 'Find the last row with data in the database FinalRow = Range("A9999").End(xlUp).Row For i = 2 To FinalRow Sheets("Data").Select ' Copy the name to cell C4 Range("A" & i).Copy Destination:=Sheets("Template").Range("C4") ' Copy data columns, transpose and paste in C10:C13 Range("B" & i & ":E" & i).Copy Sheets("Template").Select Range("C10").PasteSpecial Transpose:=True ' Copy the data for the new document to the clipboard Range("A1:F15").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 this new word document appWD.ActiveDocument.Close Next i ' Close the Word application appWD.Quit End Sub

Depois de executar essa macro, você terá um novo arquivo do Word para cada linha de dados em sua planilha de dados.

Obrigado novamente a Jake por esta ótima pergunta. Existem muitos aplicativos em que controlar o Word de dentro do Excel pode ser uma solução poderosa.

Artigos interessantes...