1
我正在嘗試不同的方法來處理前一天的工作。在工作中,我們使用Outlook 2010並全天接收帶有.XLSX附件的電子郵件。我試圖弄清楚如何在Outlook中使用VBA來檢查傳入附件的電子郵件,然後如果附件計數大於0,則測試附件,如果它是電子表格,則使用發件人地址簿信息更新tblOutlookLog。這只是我第二天或第三天在MS Access之外嘗試使用VBA,我在摸索語法的黑暗中摸索着。我已經從下面的Outlook中發佈了以下代碼。我在olInbox_ItemAdd(ByVal Item As Object)部分出現錯誤。主體行,指出這是一個「無效或不合格的參考」。我馬上提前道歉。感謝您的幫助或指導。Outlook 2010 VBA無效或不合格參考
Option Explicit
Private WithEvents InboxItems As Outlook.Items
Dim olns As NameSpace
Dim olInbox As MAPIFolder
Dim olItem As Object
Dim olAtmt As Attachment
Dim db As DAO.Database
Dim rst As DAO.Recordset
Const strdbPath = "\\FMI-FS\Users\sharp-c\Desktop\"
Const strdbName = "MSOutlook.accdb"
Const strTableName = "tblOutlookLog"
Private Sub Application_Startup()
Set olns = GetNamespace("MAPI")
Set olInbox = olns.GetDefaultFolder(olFolderInbox).Items
Set db = OpenDatabase(strdbPath & strdbName)
Set rst = db.OpenRecordset(strTableName, dbOpenDynaset)
End Sub
Private Sub Application_Quit()
On Error Resume Next
rst.Close
db.Close
Set olns = Nothing
End Sub
Private Sub olInbox_ItemAdd(ByVal Item As Object)
Dim olItem As Outlook.MailItem
Dim olAtmt As Outlook.Attachment
Dim strFoldername As String
Dim strFilename As String
Dim i As Integer
i = 0
For Each olItem In olInbox.Items
For Each olAtmt In olItem.Attachments
If olItem.olAtmt.Count > 0 Then
If Right$(olAtmt.FileName, 5) = ".xlsx" Then
strFilename = "\\FMI-FS\Users\sharp-c\Desktop\Test" & olAtmt.FileName
olAtmt.SaveAsFile strFilename
i = i + 1
rst.AddNew
rst!Subject = Left(.Subject, 255)
rst!Sender = .Sender
rst!FromAddress = .SenderEmailAddress
rst!Status = "Inbox"
rst!Logged = .ReceivedTime
rst!AttachmentPath = strFilename
Next
rst.Update
End If
Next olAtmt
Next olItem
Set olAtmt = Nothing
Set olItem = Nothing
End Sub
Remou,我添加了項目前綴,並在後面消除了我在本文中收到的錯誤。對於我的信息,在我的帖子解決的問題已解決後,在SO上,我們是否會創建一個涵蓋新主題的新帖子,還是繼續使用現有帖子?我很抱歉,我是新手! – CSharp821 2012-02-28 15:24:20
一般而言,如果帖子的原因相同,在這種情況下,代碼不會運行,您仍將繼續使用相同的帖子。 – Fionnuala 2012-02-28 15:31:14
這很有道理,對此感到抱歉。 – CSharp821 2012-02-28 15:35:00