我一直遇到一个问题,经过数天的努力来解决这个问题,我现在停滞不前,并真的希望这里有人可以为我提供解决方案。
我正在创建一个VB程序,该程序接受用户的输入并创建自动填充给定信息和该信息的正确接收者的标准化电子邮件(使用Outlook 2016)。该程序假设还创建一个约会项或事件项,并将电子邮件正文直接复制到事件/约会项1:1。
不幸的是,电子邮件正文中有一个表,该表也需要复制。我在网上阅读的所有内容都表示事件/约会项只会采用RTF文本,这就是为什么我在正确地将表格从电子邮件移至事件时遇到了很多问题,但是,我的问题是为什么我可以右键单击电子邮件副本整个身体并将其粘贴到事件中而不会出现问题,表格看起来100%正确,但是我不能以某种方式在VB中编程相同的动作来创建好的副本?
我尝试过: 获取RTF格式而不是HTML的输入,找到可用的HTML到RTF函数,然后尝试使用剪贴板。
TLDR:我可以简单地复制电子邮件正文(包括附带的表格)并将其1:1粘贴到Outlook事件项中,但是我无法使用VB代码执行相同的过程,我是否丢失了某些内容?
答案 0 :(得分:0)
我认为最好的办法是使用Word对象模型,同时为邮件项目和事件项目提取Word文档。然后,您可以将邮件项目粘贴到事件项目中。像这样:
Public Sub TransferEmailToEvent()
Dim oMsg As Outlook.MailItem, oAppt As Outlook.AppointmentItem
' using late binding, so your users won't have to add a reference
' to Word in their Outlook instance to be able to run this
Dim wdMailDoc As Object, wdEventDoc As Object
Set oMsg = Outlook.CreateItem(olMailItem)
oMsg.BodyFormat = olFormatHTML
' of course, here you'd insert the HTML into the email however you do now.
oMsg.HTMLBody = "<table border=""1""><trow><td>Apple</td><td>Banana</td></trow></table>"
' you have to display the mail item before you can get its inspector
oMsg.Display
Set wdMailDoc = oMsg.GetInspector.WordEditor
wdMailDoc.Range.Copy
Set oAppt = Outlook.CreateItem(olAppointmentItem)
Set wdEventDoc = oAppt.GetInspector.WordEditor
' 1 = wdPasteRTF
wdEventDoc.Range.PasteSpecial datatype:=1
oAppt.Display
End Sub