Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 将电子邮件正文复制到EventItem或Appointmentitem正文1:1_Vba_Outlook - Fatal编程技术网

Vba 将电子邮件正文复制到EventItem或Appointmentitem正文1:1

Vba 将电子邮件正文复制到EventItem或Appointmentitem正文1:1,vba,outlook,Vba,Outlook,我一直遇到一个问题,经过几天的努力,我现在处于停滞状态,我真的希望这里的人能给我一个解决方案 我正在创建一个VB程序,它接受用户的输入,并创建一个标准化的电子邮件,自动填充给定信息和该信息的正确接收者(使用Outlook 2016)。假设该程序还创建一个AppointItem或eventitem,并通过电子邮件正文直接复制到event/AppointItem 1:1 不幸的是,电子邮件正文中有一个表也需要复制。我在网上读到的所有信息都表明,活动/任命项目只接受RTF文本,这就是为什么我在将表格从

我一直遇到一个问题,经过几天的努力,我现在处于停滞状态,我真的希望这里的人能给我一个解决方案

我正在创建一个VB程序,它接受用户的输入,并创建一个标准化的电子邮件,自动填充给定信息和该信息的正确接收者(使用Outlook 2016)。假设该程序还创建一个AppointItem或eventitem,并通过电子邮件正文直接复制到event/AppointItem 1:1

不幸的是,电子邮件正文中有一个表也需要复制。我在网上读到的所有信息都表明,活动/任命项目只接受RTF文本,这就是为什么我在将表格从电子邮件正确移动到活动时遇到如此多的问题,我的问题是,为什么我可以在电子邮件中右键单击复制整个正文,并将其粘贴到事件中,而表格看起来100%正确,但我无法以某种方式在VB中编程相同的动作来创建一个好的副本

我试过: 获取RTF格式而不是HTML格式的输入,查找可用的HTML to RTF函数,并尝试使用剪贴板


TLDR:我可以简单地复制电子邮件正文(包括表)并将其以1:1的比例粘贴到outlook事件项中,但我无法使用VB代码执行相同的过程,我是否遗漏了什么?

我认为最好使用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
Public Sub-transferMailToEvent()
将oMsg设置为Outlook.MailItem,将oAppt设置为Outlook.AppointmentItem
'使用后期绑定,因此用户不必添加引用
'以使Word在其Outlook实例中能够运行此
Dim wdMailDoc作为对象,wdEventDoc作为对象
设置oMsg=Outlook.CreateItem(olMailItem)
oMsg.BodyFormat=olFormatHTML
当然,在这里,你可以将HTML插入到电子邮件中,不管你现在怎么做。
oMsg.HTMLBody=“AppleBanana”
'您必须先显示邮件项目,然后才能获取其检查器
显示
设置wdMailDoc=oMsg.GetInspector.WordEditor
wdMailDoc.Range.Copy
设置oAppt=Outlook.CreateItem(olAppointmentItem)
设置wdEventDoc=oAppt.GetInspector.WordEditor
'1=wdPasteRTF
wdEventDoc.Range.PasteSpecial数据类型:=1
应用显示器
端接头
也许可以添加到目前为止您拥有的(不完美的)代码,这样其他人就不必从头开始重新创建它。。。