Outlook约会中的Excel VBA - 替换功能条格式化

时间:2016-06-23 15:29:32

标签: excel vba excel-vba outlook macros

我正在尝试编写一个宏,使用.oft 约会模板将占位符从Excel发送到Outlook日历。

使用类似的替换功能时:

Dim oMail as Object
Set myOlApp = CreateObject("Outlook.Application")

Set oMail = myOlApp.CreateItemFromTemplate(path)

(...)

strFind = "Value"
strNew = Cells(x ,y)
oMail.body = Replace (oMail.body, strFind, strNew)

约会以明文形式出现,所有格式都被删除。字体,链接甚至签名。

如果我将值.body更改为.HTMLbody,则替换功能不起作用,模板未经编辑。我不希望将电子邮件内容作为正文放入代码中,因为它们有时会更改,这会让我每次都编辑宏而不是模板。

有什么建议吗? 我没有想法了。

1 个答案:

答案 0 :(得分:0)

oMail的body属性是纯文本。 RTFbody具有所有格式,但它是一个字节数组

Dim oMail as Outlook.AppointmentItem
Set myOlApp = CreateObject("Outlook.Application")

Set oMail = myOlApp.CreateItemFromTemplate(path)

 Dim RegulareString As String

'convert from byte array to a string
 RegulareString = StrConv(pushAppt.RTFBody, vbUnicode)

'do your replacements
RegulareString = Replace(RegulareString , strFind, strNew)

'convert back to byte array
Dim theBytes() As Byte
theBytes = StrConv(RegulareString , vbFromUnicode)

oMail.RTFBody = theBytes
oMail.Display