VBA Excel创buildOutlook电子邮件主题和主体空白

我有一个由别人发起的Excel电子表格,通过一个计划的任务发送一个电子邮件到一个组,或者至less已经习惯了。 它最近停止了工作。 我现在没有时间重build他的整个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 

每当我看到这么多的“错误恢复下一个”在我咬牙切齿的东西。

发生了什么事是它“工作”,但它发送的电子邮件是空白的。 在debugging中,我可以看到主题内容和正文内容都存在并具有价值。 我重写了它

  OutMail.To = "eric.lizotte@.com" OutMail.CC = "" OutMail.BCC = "" OutMail.Subject = Sheets("Weight").Range("A1") OutMail.HTMLBody = Convert.ToString(rng) OutMail.Send 

并发送一个debugging点,并检查outmail的属性,主题和htmlbody有价值。 我找不到为什么发送后他们是空白的。

鉴于你正在自动化另一个应用程序,你可能不应该依赖该范围的默认属性 – 只要指定你想要的属性,例如Value

 OutMail.Subject = Sheets("Weight").Range("A1").Value OutMail.HTMLBody = rng.Value 

您也可以尝试HTMLBodyText属性:

 OutMail.HTMLBody = rng.Text 

然后,您可以确信您正在为邮件属性分配一个String ,这正是它所期望的。