我有一个由其他人构建的Excel电子表格,它通过计划任务向组发送电子邮件,或者至少用于。它最近停止了工作。我现在没有时间重建他的整个Rube Goldberg / Wile E. Coyote系统,所以我正在努力修复它。
在其中一个Excel文档中,此代码存在
Set rng = Nothing
On Error Resume Next
Set rng = Sheets("Weight").Range("A2")
On Error GoTo 0
If rng Is Nothing Then
MsgBox "The selection is not a range or the sheet is protected" & _
vbNewLine & "please correct and try again.", vbOKOnly
Exit Sub
End If
With Application
.EnableEvents = False
.ScreenUpdating = False
End With
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
On Error Resume Next
With OutMail
.To = "eric.lizotte@.com"
.CC = ""
.BCC = ""
.Subject = Sheets("Weight").Range("A1")
.HTMLBody = Convert.ToString(rng)
.Send
End With
每当我看到这么多“接下来的错误恢复”时,我都会咬牙切齿。
发生的事情是它“有效”,但它发送的电子邮件是空白的。在调试中,我可以看到主题内容和正文内容都存在并具有值。我把它改写为
OutMail.To = "eric.lizotte@.com"
OutMail.CC = ""
OutMail.BCC = ""
OutMail.Subject = Sheets("Weight").Range("A1")
OutMail.HTMLBody = Convert.ToString(rng)
OutMail.Send
并在send上抛出一个调试点,并检查outmail的属性,主题和htmlbody有值。我无法弄清楚为什么发送后他们是空白的。
答案 0 :(得分:1)
鉴于您正在自动化另一个应用程序,您可能不应该依赖于该范围的默认属性 - 只需指定您想要的属性,例如: Value
:
OutMail.Subject = Sheets("Weight").Range("A1").Value
OutMail.HTMLBody = rng.Value
您也可以尝试Text
的{{1}}属性:
HTMLBody
然后,您可以确信您正在为邮件属性分配OutMail.HTMLBody = rng.Text
,这是它所期望的。