电子邮件包含来自不同工作表的范围



我想使用VBA发送outlook电子邮件,从工作簿中的三个不同的工作表范围,我怎么能结合三个范围(rng1然后留下空白行,然后rng2和留下空白行,然后rng3),以显示在同一电子邮件中?我尝试了下面的代码,但有一个

类型不匹配错误

Set rngComb = rng1 & rng2 & rng3

我不知道如何修改它。

Sub combEmail()
Dim OutApp As Object, OutMail As Object
Dim rngComb As Range, rng1 As Range, rng2 As Range, rng3 As Range
Set rng1 = ThisWorkbook.Sheets("Sheet1").Range("C12:F14")
Set rng2 = ThisWorkbook.Sheets("Sheet2").Range("C16:F18")
Set rng3 = ThisWorkbook.Sheets("Sheet3").Range("H12:K14")
Set rngComb = rng1 & rng2 & rng3
Set OutApp = CreateObejct("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
With OutMail
.To = ThisWorkbook.Sheets("Sheet1").Range("A1").Value
.Subject = "CombinedNotice"
.HTMLBody = RangetoHTML(rngComb)
.display
End With
Set OutMail = Nothing

End Sub

使用Ron de Bruin的RangetoHTML

您需要在每个服务器上单独运行RangetoHTML。这将给你一个为每一个HTMLString

然后可以将它们连接起来。

Dim sHTML As String
sHTML = RangetoHTML(rng1) & "<br>" & RangetoHTML(rng2) & "<br>" & RangetoHTML(rng3)

.HTMLBody = sHTML

或只是:

.HTMLBody = RangetoHTML(rng1) & "<br>" & RangetoHTML(rng2) & "<br>" & RangetoHTML(rng3)

为了在每个标签之间增加更多的空间,可以添加更多的<br>标签。-"<br><br><br><br>"


From RangetoHTML代码页:

重要:请注意,如果您已将Excel设置为R1C1引用样式,代码将无法工作。您可以在宏的开头添加这一行,以确保它被设置为xlA1 style

Application.ReferenceStyle = xlA1

如果需要的话,这个可以设置为

Application.ReferenceStyle = xlR1C1

最新更新