2012-12-21 86 views
1

我有一些Outlook VBA代码可以创建Word文档并粘贴用户之前选择的部分电子邮件,例如, (一些无关痛痒的部分代码删除)使用VBA将HTML文本从Outlook复制到Word中

Private Sub CreateDoc(M As MailItem) 
Dim WApp As Word.Application, WDoc As Word.Document, I As Inspector 

    Set I = M.GetInspector 

    Set WApp = New Word.Application 
    WApp.Visible = True 
    Set WDoc = WApp.Documents.Add 

    Select Case I.EditorType 
    Case olEditorWord 
     ' this works like a charm, even if multiple parts selected in MailItem 
     I.WordEditor.Application.Selection.Copy 
     WApp.Selection.PasteAndFormat wdFormatOriginalFormatting 

    Case olEditorHTML 
     ' trouble starts here ... I don't get it ... best I came up with is 
     WApp.Selection.InsertAfter I.HTMLEditor.Selection.CreateRange.Text 

    Case Else 
     ' unsupported formats 
    End Select 

    ' clean up 
    Set I = Nothing 
    Set WDoc = Nothing 
    Set WApp = Nothing 
End Sub 

其在Outlook 2003和2010年的工作

问题:

我的问题是在olEditorHTML部分,我只是无法弄清楚如何获取包括格式在内的选定文本。目前为止我能想出的最好的方法是插入纯文本。任何人都可以帮助我找到正确的代码,从HTMLEditor中将选定的文本转换为Word,包括格式(就像手动执行select/Ctrl-C/Ctrl-V一样)。

+0

可能是一个愚蠢的评论,但是当你用olEditorHTML对olEditorWord使用相同的代码时会发生什么? – JMK

+0

'I.WordEditor.Application.Selection.Copy'挂起“运行时错误91:对象变量或块变量未设置”,因为正如在调试器中可以很好地看到的,Inspector的WordEditor对象'是Nothing' – MikeD

+0

和'I.HTMLEditor.Application.Selection.Copy'挂起运行时错误438:对象不支持此属性或方法,因为HTMLEditor对象没有应用程序属性 – MikeD

回答

2

感谢您发布此信息。你的问题实际上已经成为我的解决方案[非常棘手的问题]。

下面的线为我工作,可能是它会为你工作也[柜面你还在寻找一个解决方案:)

更改I.WordEditor.Application.Selection.Copy到I.WordEditor。 Selection.Copy,它可能工作。

+0

+1,并感谢您检阅和回复陈旧的帖子;我自从使用一种解决方法,但可能有机会在几周后再次转向这个问题,然后可能会很高兴地接受您的答案 – MikeD

相关问题