在mail.Body中复制多行

时间:2013-03-13 16:15:35

标签: email vba

我想使用VB在邮件正文中添加多行。在打开和格式化邮件的代码下面:

With Workbooks("HEelo world.xlsx").Worksheets("Hello")
    mail.To = .Range(.Range("F:F").Find("Address1").Address).Offset(0, 1)
    mail.Cc = .Range(.Range("F:F").Find("Address2").Address).Offset(0, 1)
    mail.Subject = .Range(.Range("F:F").Find("Object").Address).Offset(0, 1)
    mail.Body = .Range(.Range("F:F").Find("Body").Address).Offset(0, 1)
    mail.Body = ....
End With

添加多行的正确语法是什么?

2 个答案:

答案 0 :(得分:1)

我发现这应该有效:

Dim strBody As String
        strBody = .Range(.Range("B:B").Find("text1").Address).Offset(0, 1) & vbCrLf _
        & .Range(.Range("B:B").Find("text2").Address).Offset(0, 1) & vbCrLf _
        & .Range(.Range("B:B").Find("text3").Address).Offset(0, 1) & vbCrLf _
        & .Range(.Range("B:B").Find("text4").Address).Offset(0, 1) & vbCrLf 
mail.Body = strBody

答案 1 :(得分:1)

Dummies Guide to naming Excel ranges

使用我提供的链接了解如何修改范围以获得名称。您可以将范围作为vba中的命名引用进行定位。对于此示例,我们调用了包含邮件正文“BodyValue”值的单元格范围(例如.B4:B8)

Dim strBody As String
    strBody = ""
    For Each cl in Range("BodyValue").Cells
        strBody = cl.Value & vbCrLf
    Next
mail.Body = strBody

您也可以对电子邮件中使用的所有部分执行此操作,因此不要使用“偏移”,而是命名单元格或范围并引用VBA中的名称。如果您在工作表的任何部分添加行或列,这也可以避免发生错误,因为命名单元格的名称与工作表中的地址的更改无关。