VBA - Mailmerge从(少数)保存中提供旧数据

时间:2014-12-06 09:04:42

标签: excel vba mailmerge

使用office 2007.我有一张带有一些宏的Excel表格,这些宏正在使用mailmerge创建一个word文档。问题是,当我第一次执行mailmerge时,我从保存前的excel表中获取数据。只有在第一次邮件合并之后,如果我再次保存Excel工作表(是的,我也在第一次邮件合并之前保存了它),第二个邮件将使用正确的信息。

执行的mailmerge总是在Excel文档中只有一行。所以它创建了一个输出文档。想象一下这是Excel专栏:

NAME    INVOICENR   AMOUNT
Peter   12345-001   400

我现在将数据更改为:

NAME    INVOICENR   AMOUNT
Nicolas 12345-004   3400

我保存文档并运行宏来运行邮件合并。我现在将获得一个包含Peter的创建文档。 如果我现在再次保存文档并再次运行宏,我将收到包含Nicolas的文档。

我在网上发现的唯一一件事就是:https://support.microsoft.com/kb/204542/en-us但是它指的是Office 2000所以我不知道它是否真的相关。

正在运行的宏在这里:

Sub RunSingleLine(template As String)
    Dim CurrentRow As Integer
    CurrentRow = 1 'Never needs to be anything else.

    Dim wd As Object
    Dim wdocSource As Object

    Dim strWorkbookName As String
    strWorkbookName = ThisWorkbook.Path & "\" & ThisWorkbook.Name

    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(template)

    wdocSource.MailMerge.MainDocumentType = 0

    wdocSource.MailMerge.OpenDataSource _
            Name:=strWorkbookName, _
            AddToRecentFiles:=False, _
            Revert:=False, _
            Format:=0, _
            Connection:="Data Source=" & strWorkbookName & ";Mode=Read", _
            SQLStatement:="SELECT * FROM `Mergetable$`"
            'Mergetable is a worksheet with the necessary info for the merge

    With wdocSource.MailMerge
        .Destination = 0
        .SuppressBlankLines = True
        With .DataSource
            .FirstRecord = CurrentRow
            .LastRecord = CurrentRow
        End With
        .Execute Pause:=False
    End With

    wd.Visible = True
    wdocSource.Close SaveChanges:=False

    Set wdocSource = Nothing
    Set wd = Nothing
End Sub

0 个答案:

没有答案