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
È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top