Precisando gerar etiquetas para seus clientes , que tal usar a integração VB-Word usando VBA para automatizar esta tarefa ? Este será o assunto do nosso artigo. |
Já tratamos da mesclagem de dados para gerar documentos no artigo - Criando Relatórios com o Word
A novidade deste artigo é que iremos gerar etiquetas com os dados de uma tabela em um banco de dados Access.
Na verdade estaremos usando um banco de dados por uma questão de conveniência , mas , poderíamos ter usado um arquivo texto. Sim , você pode criar um arquivo texto e usá-lo como fonte de dados para gerar as etiquetas. Ao gerar o arquivo você somente deve tomar o cuidado de de separar as colunas com um caractere TAB e os registros com um caractere - ENTER . Veja abaixo um exemplo de um arquivo texto que poderíamos usar:
A tabela Clientes , que será a nossa fonte de dados , possui os seguintes dados :
- Inicie um novo projeto no VB e no formulário padrão insira os controles conforme o layout abaixo :
- Um controle Label - label1 - Um controle TextBox - Text1.text - Um botão de comando - command1 |
- Não esqueça de fazer a referência a biblioteca - Microsoft Word Object Library :
- Agora no evento Click do botão de comando - command1 - insira o código abaixo:
Private Sub Command1_Click() Dim oApp As Word.Application Dim oDoc As Word.Document 'Inicia um novo documento Word Set oApp = CreateObject("Word.Application") Set oDoc = oApp.Documents.Add Command1.Caption = "&Gerando Etiquetas..." With oDoc.MailMerge 'Inclui os campos de mesclagens temporarios 'Usamos os campos da tabela Clientes do banco de dados Clientes2.mdb With .Fields .Add oApp.Selection.Range, "Nome" oApp.Selection.TypeParagraph .Add oApp.Selection.Range, "Endereco" oApp.Selection.TypeParagraph .Add oApp.Selection.Range, "Cidade" oApp.Selection.TypeText " " .Add oApp.Selection.Range, "Cep" oApp.Selection.TypeText " - " .Add oApp.Selection.Range, "Estado" End With Dim oAutoText As Word.AutoTextEntry Set oAutoText = oApp.NormalTemplate.AutoTextEntries.Add("MinhasEtiquetas", oDoc.Content) 'os campos de mesclagens serão excluidos pois a entrada - AutoText foi gerada oDoc.Content.Delete 'Define a mesclagens para etiquetas e usa um banco de dados 'como fonte de dados , voce pode usar um arquivo texto| .MainDocumentType = wdMailingLabels 'Informe aqui o caminho da fonte de dados '.OpenDataSource Name:="C:\teste\etiqueta.txt" --> Voce pode usar um arquivo texto sDBPath = Text1.Text .OpenDataSource Name:=sDBPath, SQLStatement:="SELECT * FROM Clientes" 'Cria um novo documento para as etiquetas usando a entrada AutoText '5160 é o numero da etiqueta a usada oApp.MailingLabel.CreateNewDocument Name:="5160", Address:="", _ AutoText:="MinhasEtiquetas", LaserTray:=wdPrinterManualFeed 'Executa a mesclagem para gerar as etiquetas .Destination = wdSendToNewDocument .Execute 'Excluir a entrada AutoText inserida oAutoText.Delete End With Command1.Caption = "&Etiquetas Geradas..." 'fecha o documento original e torna o word visivel e exibe as etiquetas oDoc.Close False oApp.Visible = True Command1.Caption = "&Gerar Etiquetas" ' Salva o modelo quando o usuario sair do word oApp.NormalTemplate.Saved = True End Sub |
Como o código já esta comentado eu não vou me ater em explicar novamente o que ele faz. Agora é só executar e aguardar uns instantes , e , voilá, eis as etiquetas geradas no Word...
Obs: Se a sua fonte de dados for muito grande a geração pode demorar um pouquinho...
Para se informar mais sobre este assunto veja o links na Knowledge Base :
Tranquilo ... Até breve...
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
|
Gostou ?
Compartilhe no Facebook
Compartilhe no Twitter
Referências: