Word:VBA 录制的宏给出运行时错误

问题描述 投票:0回答:1

我的日常任务是两三个非常简单的 Word 文档,我会进行邮件合并以将文档发送到 Excel 中的地址。非常简单的邮件,开始邮件合并-电子邮件,选择数据源-xlsm文件,清理行为并发送。非常非常简单。然而,单击一个按钮会更容易!录制了一个vba宏的操作。录制完成后,单击按钮启动宏,收到此运行时错误:“通过邮件或传真 没有有效的邮件地址。选择“设置”按钮以选择邮件 地址数据字段。”尝试了几次,是什么导致了错误,如何修复?突出显示错误步骤:“执行暂停:=False”记录中的代码:

Sub sendMailSheet1()
'
' sendMail Macro
'
'
'MsgBox "In Sheets1"
    ActiveDocument.MailMerge.MainDocumentType = wdEMail
    ActiveDocument.MailMerge.OpenDataSource Name:= _
        "C:\Users\Hal 1GB M2\Documents\MyEmailer.xlsm", ConfirmConversions:=False _
        , ReadOnly:=False, LinkToSource:=True, AddToRecentFiles:=False, _
        PasswordDocument:="", PasswordTemplate:="", WritePasswordDocument:="", _
        WritePasswordTemplate:="", Revert:=False, Format:=wdOpenFormatAuto, _
        Connection:= _
        "Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=C:\Users\Hal 1GB M2\Documents\MyEmailer.xlsm;Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Engine Type=37;Jet OLEDB:Database Lo" _
        , SQLStatement:="SELECT * FROM `Sheet1$`", SQLStatement1:="", SubType:= _
        wdMergeSubTypeAccess
    With ActiveDocument.MailMerge
        .Destination = wdSendToEmail
        .SuppressBlankLines = True
        With .DataSource
            .FirstRecord = wdDefaultFirstRecord
            .LastRecord = wdDefaultLastRecord
        End With
        .Execute Pause:=False
    End With
End Sub
vba windows ms-word
1个回答
0
投票

合并到电子邮件需要知道数据源中的哪个字段/列包含用于发送每封电子邮件的电子邮件地址。

宏记录器不会记录所需的代码行。在

.Destination = wdSendToEmail
行之后,您需要类似的东西

    .MailAddressFieldName = "email"

其中电子邮件是包含电子邮件地址的 Excel 列的确切名称(区分大小写)。

您可能还需要

    .MailFormat = wdMailFormatHTML ' or wdMailFormatPlainText
    .MailSubject = "the text you want as the subject of every email"
© www.soinside.com 2019 - 2024. All rights reserved.