Neste post, gostaria de dividir uma das minhas grandes dificuldades em pesquisas pela Internet, que é abrir um documento Word com Mala Direta viculada ao Access e salvar em um novo documento com um novo nome. Depois de muita pesquisa eu finalmente consegui chegar uma solução misturando dois codigos que encontrei em um Forum Americano. Segue abaixo:
Sub MailMerge2()
Dim wd As Object
Dim wdocSource As Object
On Error Resume Next
Set wd = GetObject(, "Word.Application")
If wd Is Nothing Then
Set wd = CreateObject("Word.Application")
End If
On Error GoTo 0
Set wdocSource = wd.Documents.Open("C:\temp\Teste.doc") 'abre o documento onde tem a mala direta
wdocSource.MailMerge.MainDocumentType = wdFormLetters
'vincula a Banco de Dados e Tabela com o documento
wdocSource.MailMerge.OpenDataSource _
Name:="C:\controleboletas\Teste.mdb", _
LinkToSource:=True, AddToRecentFiles:=False, _
Connection:="QUERY qryLabelQuery", _
SQLStatement:="SELECT * FROM [TblTeste]"
'mescla os dados e cria um novo documento
With wdocSource.MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = 1
.LastRecord = 1
End With
.Execute Pause:=False
End With
'salva o novo documento com um novo nome
Arquivo = "TesteNovoDoc"
wd.ActiveDocument.SaveAs ("C:\temp\" & Arquivo & ".doc")
wd.Visible = False
wdocSource.Close SaveChanges:=False
'abre o novo arquivo
Set wdocSource = wd.Documents.Open("C:\temp\" & Arquivo & ".doc")
wd.Visible = True
Set wdocSource = Nothing
Set wd = Nothing
End Sub
Nenhum comentário:
Postar um comentário