我正在Outlook VBA中編寫一個腳本,以便在Access數據庫中記錄每封電子郵件,因爲它們會進入我的收件箱。我有觸發器沒有問題的代碼。它訪問Access數據庫沒有問題。它複製主題沒有問題。然後它到達身體並且根本不復制。我已經嘗試了諸如.HTMLbody之類的東西,而不僅僅是.Body,但是這又顯示了一個空的主體。我的代碼如下:VBA Outlook 2010收到的郵件.Body爲空
Option Explicit
Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
Dim objNS As Outlook.NameSpace
Dim objEmail As Outlook.MailItem
Dim strIDs() As String
Dim intX As Integer
Dim ws As DAO.Workspace
Dim db As DAO.Database
Dim sDb As String
Dim sSQL As String
Dim qdf As QueryDef
strIDs = Split(EntryIDCollection, ",")
For intX = 0 To UBound(strIDs)
Set objNS = Application.GetNamespace("MAPI")
Set objEmail = objNS.GetItemFromID(strIDs(intX))
sDb = "C:\Users\######\Documents\EmailDatabase.accdb"
Set ws = DBEngine.Workspaces(0)
Set db = ws.OpenDatabase(sDb)
sSQL = "INSERT INTO AllEmails (Subject,Message) Values ('" & objEmail.Subject & "','" & objEmail.HTMLBody & "')"
Set qdf = db.CreateQueryDef("", sSQL)
qdf.Execute dbFailOnErro
MsgBox objEmail.HTMLBody
Next
Set objEmail = Nothing
End Sub
如果有人有任何想法我做錯了,請讓我知道。三小時的谷歌搜索似乎沒有對它進行排序!
你的消息框還沒有返回? – Jordan
是@Jordan消息框打開(所以沒有錯誤拋出),但沒有任何內容。 – codeacker
逐步通過您的代碼(F8)並在分配後在您的本地窗口中查看'objEmail'。當你展開變量時,看看是否還有'body'屬性。想知道'GetItemFromID'實際上是否返回了'MailItem' –