我正在尝试编写一个宏,使用.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,则替换功能不起作用,模板未经编辑。我不希望将电子邮件内容作为正文放入代码中,因为它们有时会更改,这会让我每次都编辑宏而不是模板。
有什么建议吗? 我没有想法了。
答案 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