我的日常任务是两三个非常简单的 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
合并到电子邮件需要知道数据源中的哪个字段/列包含用于发送每封电子邮件的电子邮件地址。
宏记录器不会记录所需的代码行。在
.Destination = wdSendToEmail
行之后,您需要类似的东西
.MailAddressFieldName = "email"
其中电子邮件是包含电子邮件地址的 Excel 列的确切名称(区分大小写)。
您可能还需要
.MailFormat = wdMailFormatHTML ' or wdMailFormatPlainText
.MailSubject = "the text you want as the subject of every email"