发送电子邮件生成运行时错误"-2147417851 (80010105)":对象"_MailItem"的方法"收件人"失败



我想通过Outlook发送一封附有工作簿的电子邮件。

";致";以及";CC";字段未填充,导致电子邮件未发送。

";致";以及";Cc";每次使用Excel工作簿时,字段都会更改,因此需要使用H16和H19中的数据来填充电子邮件的收件人。

Dim OutApp As Object
Dim OutMail As Object
Dim strbody As String
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
strbody = "<Font Size=2 Font Face=Verdana> Hi,<br><br>" & _
"Please review and approve.<br>"
On Error Resume Next
With OutMail
.Display
.To = ActiveSheet.Range("H16")
.CC = ActiveSheet.Range("H9")
.BCC = ""
.Subject = "[APPROVAL REQUIRED]"
.HTMLBody = strbody & "<br>" & .HTMLBody
.Recipients.ResolveAll
.Attachments.Add Application.ActiveWorkbook.FullName
.Send
End With
On Error GoTo 0
Set OutMail = Nothing
Set OutApp = Nothing

没有On Error Resume Next,我得到:

运行时错误'-2147417851(80010105(':对象'_MailItem'的方法'To'失败

您现在明白为什么了:

On Error Resume Next
:  :  :  :
On Error GoTo 0

从来没有这样使用过。这样使用它可以隐藏所有错误,所以只有喜欢神秘失败的人才会使用。如果你愿意的话,我会添加一个部分来解释On Error Resume Next应该如何使用。

"运行时错误"-2147417851(80010105(":对象"_MailItem"的方法"To"失败;不是错误消息中最有用的。您所知道的关于ActiveSheet.Range("H16")的某些信息与.To不兼容。

我想补充一下:

Debug.Print ActiveSheet.Name

ActiveSheet是你想要的吗?ActiveSheet是一个需要避免的属性,除非每次运行宏时确实需要不同的活动工作表。Worksheets("Email Data")更安全,对未来的维护程序员有帮助。

如果是正确的工作表,ActiveSheet.Range("H16")的值是多少?它是一个字符串还是可以自动转换为字符串的东西?尝试:

Dim StrTemp As String
StrTemp = ActiveSheet.Range("H16").Value
Debug.Print StrTemp
.To = StrTemp

如果这没有暴露出问题,我会感到惊讶。如果您需要进一步的帮助,请报告发生了什么。

最新更新