segunda-feira, 13 de fevereiro de 2012

Merge do Word pelo Access abrindo em um novo documento

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: