Outlook 2010 VBA invalido o non qualificato
-
13-11-2019 - |
Domanda
Sto provando un approccio diverso a qualcosa su cui stavo lavorando l'altro giorno. Al lavoro, utilizziamo Outlook 2010 e riceviamo e -mail con allegati .xlsx durante il giorno. Sto cercando di capire come utilizzare VBA in Outlook per controllare le e -mail in arrivo per gli allegati, quindi se il conteggio degli allegati è> 0, testare l'allegato e se è un foglio di calcolo, aggiorna TBLOUTLOOKLOG con le informazioni sulla rubrica dei mittenti. Questo è solo il mio 2 ° o terzo giorno sperimentando VBA al di fuori di MS Access e sto armeggiando al buio cercando di capire la sintassi. Ho pubblicato il codice qui sotto da Outlook di seguito. Ricevo un errore in olinbox_itemadd (elemento byval come oggetto) sezione alla .Materia linea affermando che è un "Riferimento non valido o non qualificato". Mi scuso in anticipo nel suo sciatto. Grazie per qualsiasi assistenza o direzione.
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
Soluzione
Devi prefisporre gli elementi con l'oggetto:
rst!Subject = Left(olItem.Subject, 255)
E così via. Penso che potresti aver rimosso ad un certo punto.