2012-12-21 113 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

相關問題