Недопустимая или неквалифицированная ссылка на Outlook 2010 VBA - PullRequest
1 голос
/ 28 февраля 2012

Я пытаюсь по-другому подходить к тому, над чем я работал на днях. На работе мы используем Outlook 2010 и получаем электронные письма с вложениями .XLSX в течение дня. Я пытаюсь выяснить, как использовать VBA в Outlook для проверки входящих сообщений электронной почты на наличие вложений, а затем, если число вложений> 0, проверить вложение и, если это электронная таблица, обновить tblOutlookLog с помощью адреса отправителей. Информация о книге. Это всего лишь мой второй или третий день экспериментов с VBA за пределами MS Access, и я шариваю в темноте, пытаясь выяснить синтаксис. Я разместил код ниже из Outlook ниже. Я получаю сообщение об ошибке в olInbox_ItemAdd (элемент ByVal As Object) в строке .Subject о том, что это «недействительная или неквалифицированная ссылка» . Я заранее прошу прощения в неряшливый. Спасибо за любую помощь или направление.

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

1 Ответ

3 голосов
/ 28 февраля 2012

Вам необходимо добавить префикс к объекту:

rst!Subject = Left(olItem.Subject, 255)

И так далее. Я думаю, что вы, возможно, удалили С на каком-то этапе.

...