2011-09-07 3 views
0

다음 코드를 통과했지만 컴퓨터에서 작동하지 않는 것 같습니다. 형식 (Item.ReceivedTime, "MMDDYYYY") = 형식 (현재, "MMDDYYYY") 부분에서 개체가 지원되지 않습니다.개체 지원되지 않음

내받은 편지함에 ELN이라는 폴더를 만들고 여기에 .xls 파일과 함께 이메일을 저장했지만 여전히 작동하지 않습니다. Excel에서 DOA 및 Outlook 참조를 추가했습니다. 조언이 있습니까?

Dim appOl As New Outlook.Application 
Dim ns As Outlook.Namespace 
Dim Inbox As Outlook.MAPIFolder 
Dim Atmt As Outlook.Attachment 
Dim SubFolder As Outlook.MAPIFolder 
Dim Item As Object 
Dim FileName As String 
Dim i As Integer 
Dim varResponse As VbMsgBoxResult 

Set ns = appOl.GetNamespace("MAPI") 
Set Inbox = ns.GetDefaultFolder(olFolderInbox) 
Set SubFolder = Inbox.Folders("ELN") 
i = 0 

For Each Item In SubFolder.Items 
    If Format(Item.ReceivedTime, "MMDDYYYY") = Format(Now, "MMDDYYYY") Then 
    For Each Atmt In Item.Attachments 

     If Right(Atmt.FileName, 3) = "xls" Then 
      FileName = "SomeFile.xls" 
      Atmt.SaveAsFile FileName 
      smkSubject = Item.Subject 
      i = i + 1 
     End If 
    Next Atmt 
    End If 
Next Item 
+0

내가 아웃룩 2007 코드를 시도하고 오류를 재현 할 수 없었다. 사용중인 Outlook 버전은 무엇입니까? – JMax

+0

VBA에서 Tools-> References로 가서 MISSING :으로 시작하는 줄이 있는지 확인하십시오. 참조를 선택 취소하십시오. 그런 이상한 오류는 일반적으로 참조와 관련된 문제입니다. – transistor1

+0

Outlook 2003에서 테스트되었지만 몇 가지 사소한 구문 오류 (smkSubject가 선언되지 않았거나 아무런 이유없이 파일 이름이 변경되었거나 SaveAsFile의 경로가 없음)가 있으면 문제가 없습니다. – JimmyPena

답변

1

"항목"은 메일 항목 일 수도 있고 아닐 수도 있습니다.

이 트릭을 할 수 있습니다

For Each Item In Inbox.Items 
     If Item.Class = olMail Then 'Make sure it's a mail item 
      If Format(Item.ReceivedTime, "MMDDYYYY") = Format(Now, "MMDDYYYY") Then 
       For Each Atmt In Item.Attachments 
        If Right(Atmt.FileName, 3) = "doc" Then 
         FileName = "SomeFile.xls" 
         Atmt.SaveAsFile FileName 
         smkSubject = Item.Subject 
         i = i + 1 
        End If 
       Next Atmt 
      End If 
     Else 
      Debug.Print "This is not a mail item:" & Item.Class 'Some class constant that's not supported as a mail item. 
     End If 
    Next Item 
+0

항목을 메일 항목이 아닌 것으로 만드는 것은 무엇입니까? 첨부 파일이있는 모든 이메일이 항목이 아닙니까? – Ali

+0

* 첨부 파일이있는 모든 전자 메일이 항목이 아닌가? * 그렇게 생각 하겠지만 코드는 _subfolder_에있는 항목 (첨부 파일이없는 항목)에 대해 각각 For를 수행합니다. Outlook 하위 폴더에서 전자 메일뿐만 아니라 모든 종류의 파일을 삭제할 수 있습니다. 방금 하위 폴더에 텍스트 파일을 놓고 원래 코드를 실행하여 오류를 재현했습니다. 위의 코드를 시도하십시오. – ray

+0

OP _did_는 의도적으로 그 폴더에 전자 메일을 넣었다 고 말합니다. "받은 편지함에 ELN이라는 폴더를 만들고 여기에 .xls 파일과 함께 전자 메일을 보냈습니다."- 그는 여전히 실수 할 수는 있지만 현재 항목은 MailItem입니다. – JimmyPena

관련 문제