ETIQUETAS EM WORD

USUARIO.EXCLUIDOS 18/09/2006 15:21:27
#172181
Pessoal tenho o seguinte código para imprimir etiquetas em word, ele funciona, mas manual. Gostava de saber como poder completar a string para ser tudo automatico para o cliente. Aqui está o código:

Public Sub etiquetas()

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

With oDoc.MailMerge

'Inclui os campos de mesclagens temporarios
'Usamos os campos da tabela socios do banco de dados bd.mdb
With .Fields
.Add oApp.Selection.Range, "nome"
oApp.Selection.TypeParagraph
.Add oApp.Selection.Range, "morada"
oApp.Selection.TypeParagraph
.Add oApp.Selection.Range, "codpostal"

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:    este\etiqueta.txt" --> Voce pode usar um arquivo texto

sDBPath = App.Path & "\base de dados\bd.mdb"
.OpenDataSource Name:=sDBPath, SQLStatement:="SELECT * FROM tbl_socios"

'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


'fecha o documento original e torna o word visivel e exibe as etiquetas
oDoc.Close False
oApp.Visible = True
' Salva o modelo quando o usuario sair do word
oApp.NormalTemplate.Saved = True

End Sub


----------------------------------------------------
Podem testar, ao executar ele vai pedir informação do tipo, password da base de dados, vai pedir para confirmar a origem dos dados e qual a ligação a fazer, eu queria que tudo isto fosse automático. O problema falta por completar melhor estas linhas de código:

sDBPath = App.Path & "\base de dados\bd.mdb"
.OpenDataSource Name:=sDBPath, SQLStatement:="SELECT * FROM tbl_socios"

Quem poder ajudar, agradecia, é urgente.

Obrigada



USUARIO.EXCLUIDOS 18/09/2006 15:30:42
#172188
A conexao é feita à  base de dados da seguinte forma:

Set conn = New ADODB.Connection
conn.Open "driver={microsoft access driver (*.mdb)}; DBQ=" & App.Path & "\base de dados\bd.mdb;pwd=xxxxx"

Poderá ajudar
USUARIO.EXCLUIDOS 18/09/2006 16:33:15
#172222
Cara,

Eu estou querendo criar um programa assim também. Mas o que significa AutoText?
VB6MASTER 18/09/2006 18:01:48
#172263
O comando para impressão do doc do Word, pelo VB é:
DocWord.ActiveDocument.PrintOut]DocWord.ActiveDocument.PrintOut

USUARIO.EXCLUIDOS 18/09/2006 19:16:39
#172271
Pessoal ninguem sabe mesmo como completar a string?
VB6MASTER 19/09/2006 08:42:57
#172313
Resposta escolhida
Não entendi pra que vc utiliza o AutoTexto do Word.
Mas veja, o autotexto é particular de uma determinada máquina, um usuário pode acrescentar diversos tipos de autotexto e este fica gravado no arquivo Normal do Word, só que em outra máquina este autotexto pode não existir, aí, seu aplicativo pode causar erro e não executar a função planejada.
Eu tenho aplicativos, inclusive com exemplo postado aqui no site de mala direta onde o documento é pre-definido, assim, não há necessidade de criar um novo, o documento se atualiza automaticamente com os dados que o usuário selecionar. (procure por: Emitindo relatórios pelo Word via VB - ou algo assim) e veja como funciona, ao menos como exemplo. De reprente, vc pode ter alguma idéia de como resolver seu problema.
Tópico encerrado , respostas não são mais permitidas