2017-03-09 69 views
0

我有一個包含表格的word文檔,它是電子郵件的日誌。第1列是電子郵件的日期,第2列是主題行,第3列中我想嵌入實際的電子郵件,因此它顯示爲MSG文件。 這個VBA是在word文檔中,我用word打開了vba中的郵件項目。如何將mailitem作爲msg文件嵌入word文檔

如何嵌入郵件?

Sub create_log() 
Dim appOL As Outlook.Application 
Dim appFolder As Outlook.Folder 
Dim nsOL As Outlook.NameSpace 
Dim mailItem As Outlook.mailItem 
Dim items As Outlook.items 
Set appOL = New Outlook.Application 
Set nsOL = appOL.GetNamespace("MAPI") 
Set appFolder = Session.GetDefaultFolder(olFolderInbox).Folders("Email_log") 

Dim doc As Word.Document 
Dim tbl As Word.Table 
Dim cell As Word.cell 
Dim row As Long 
Dim rows_needed As Long 

Set doc = Application.ActiveDocument 

If doc.Tables.Count > 1 Then 
    MsgBox "Too many tables, there should only be one" 
    Exit Sub 
End If 
Set tbl = doc.Tables(1) 
rows_needed = appFolder.items.Count - tbl.Rows.Count 
While rows_needed > 0 
    tbl.Rows.Add 
    rows_needed = rows_needed - 1 
Wend 
Set items = appFolder.items 
items.Sort "ReceivedTime", False 
row = 2 
For Each mailItem In items 
    tbl.cell(row, 1).Range.Text = Left(mailItem.ReceivedTime, 12) 
    tbl.cell(row, 2).Range.Text = mailItem.Subject 
    tbl.cell(row, 3).Range. ***how do I add mailItem*** 

    row = row + 1 
Next mailItem 

End Sub 

這就是我想要的最終結果。請注意文檔和表格已經存在,宏只填寫表格中的單元格。 enter image description here

+0

你可以添加一個圖像的例子,你的word文檔應該看起來像什麼? – 0m3r

回答

1

將電子郵件保存爲.msg文件,然後將路徑傳遞給Range.InsertFile方法中的該文件。

+0

我嘗試了Range.InsertFile,但最後用二進制文本歸檔了word文檔。 'tbl.cell(row,3).Range.InlineShapes.AddOLEObject olMSG,fileName,False,True,「C:\ Program Files(x86)\ Microsoft Office \ Office14 \ 1033 \ OUTLLIBR.DLL」,35去工作,但現在ICON的參考是硬編碼的。 – kenf

+0

您可以通過其他方式獲取該.dll的路徑,因此不會硬編碼。你使用什麼參數作爲InsertFile? –

+0

保存爲MSG文件,然後插入沒有工作。但是,我使用AddOLEObject而不是insertFile方法。我用來插入圖標的參數是「C:\ Program Files(x86)\ Microsoft Office \ Office14 \ 1033 \ OUTLLIBR.DLL」,35,這是Outlook exe文件的路徑,35是圖標的索引,我只是重複了這些值,直到找到我想要的圖標。 – kenf