문제

나는 다른 일에 내가 일하는 무언가와 다른 접근 방식을 시험해 봅니다.직장에서 우리는 Outlook 2010을 사용하고 하루 종일 .xlsx 첨부 파일로 이메일을받습니다.Outlook에서 VBA를 사용하여 첨부 파일에 대한 들어오는 전자 메일을 확인한 다음 첨부 파일이> 0이면 첨부 파일을 테스트하고 스프레드 시트 인 경우 tobloutloklog 를 보낸 사람과 함께 테스트하는 방법을 알아 봅니다.주소록 정보.이것은 MS Access 외부의 VBA를 사용하여 실험하는 제 2 또는 3 일이며 구문을 알아 내려고 어둠 속에서 가난합니다.아래의 Outlook에서 아래 코드를 게시했습니다.나는 .subject 라인이 "잘못되었거나 규정되지 않은 참조" olinbox_itemadd (byval item) 섹션에 오류가 발생합니다.>.사전에 사과드립니다.도움이나 방향에 감사드립니다.

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
.

도움이 되었습니까?

해결책

객체가있는 항목을 접두사에 접두어야합니다.

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

등등.어떤 단계에서 삭제했을지도 모릅니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top