 VBA
- Gerando etiquetas no Word
VBA
- Gerando etiquetas no Word|  | 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 Facebook
  
 Compartilhe no Twitter
 
Compartilhe no Twitter
 
Referências: