2010-12-06 6 views
2

VBA를 사용하여 특정 날짜 이전에 만들어진 Items에 대해 MAPIFolders을 스캔하여 보관 PST로 이동합니다. 일반적으로 Item.CreationDate은 "이전"Outlook 항목을 검색하는 좋은 방법이지만 캘린더 항목의 경우 "작성 날짜"가 "시작 날짜"이전의 방법 일 수 있으므로 캘린더 항목의 경우 오히려 후자를 사용하려고합니다.Outlook MeetingItem의 기본 개체 유형 찾기

내 문제는 .GetAssociatedAppointment(False) 보인다 약속 잘

  • 수신 약속에 수용 MSG 곳 .GetAssociatedAppointment(False) 충돌
  • 어떤 생각을 작동 방법을

    • 수 있습니다 유형 MeetingItem 함께 Set 문에서 올바른 기본 객체 유형을 사용하기 위해 위의 경우를 구별 할 수 있습니까?

      참고 :이 Set 항상 결과를 지났 후 디버거에서 E를 검사하려고는 "아웃룩에 문제가있어서 프로그램을 종료해야합니다 ..."요청 형 MeetingItem

      Private Function TimeOf(I As Object) As Date 
      
      Dim A As AppointmentItem 
      Dim M As MailItem 
      Dim E As MeetingItem 
      Dim T As TaskItem 
      Dim C As TaskRequestAcceptItem 
      Dim D As TaskRequestDeclineItem 
      Dim Q As TaskRequestItem 
      Dim U As TaskRequestUpdateItem 
      
          Select Case TypeName(I) 
          Case "AppointmentItem" 
           Set A = I 
           TimeOf = A.Start 
           Set A = Nothing 
      
          Case "MailItem" 
           Set M = I 
           TimeOf = M.ReceivedTime 
           Set M = Nothing 
      
          Case "MeetingItem" 
           Set E = I 
           Set A = E.GetAssociatedAppointment(False) ' doesn't work if item is a 
                      ' response to an Appointment received 
           TimeOf = A.Start       ' <-- ERROR: Object variable ... not set 
           Set E = Nothing 
           Set A = Nothing 
      
          Case "TaskItem" 
           Set T = I 
           TimeOf = T.Start 
           Set T = Nothing 
      
          Case "TaskRequestAcceptItem" 
           Set C = I 
           TimeOf = C.Start 
           Set C = Nothing 
      
          Case "TaskRequestDeclineItem" 
           Set D = I 
           TimeOf = D.Start 
           Set D = Nothing 
      
          Case "TaskRequestItem" 
           Set Q = I 
           TimeOf = Q.Start 
           Set Q = Nothing 
      
          Case "TaskRequestUpdateItem" 
           Set U = I 
           TimeOf = U.Start 
           Set U = Nothing 
      
          Case Else 
           TimeOf = I.CreationTime 
          End Select 
      
      End Function 
      

    답변

    1

    MessageClass가 "IPM.Schedule.Meeting.Request"입니다. Acceptance-type의 MeetingItem에는 "IPM.Schedule.Meeting.Resp.Pos"라는 MessageClass가 있습니다. Outlook 2003의 다른 MessageClass에 대한 자세한 내용은 here을 참조하십시오. Outlook 2007에서 다음 코드를 테스트했습니다. 정상적으로 작동합니다.

    Private Function TimeOf(I As Object) As Date 
    
    Dim A As AppointmentItem 
    Dim M As MailItem 
    Dim E As MeetingItem 
    Dim T As TaskItem 
    Dim C As TaskRequestAcceptItem 
    Dim D As TaskRequestDeclineItem 
    Dim Q As TaskRequestItem 
    Dim U As TaskRequestUpdateItem 
    
        Select Case TypeName(I) 
        Case "AppointmentItem" 
         Set A = I 
         TimeOf = A.Start 
         Set A = Nothing 
    
        Case "MailItem" 
         Set M = I 
         TimeOf = M.ReceivedTime 
         Set M = Nothing 
    
        Case "MeetingItem" 
         Set E = I 
         If (E.MessageClass = "IPM.Schedule.Meeting.Request") Then 
          ' Meeting Request 
          Set A = E.GetAssociatedAppointment(False) 
          TimeOf = A.Start 
          Set A = Nothing 
         Else 
          ' Other MeetingItem 
          TimeOf = E.ReceivedTime 
         End If 
         Set E = Nothing 
    
        Case "TaskItem" 
         Set T = I 
         TimeOf = T.Start 
         Set T = Nothing 
    
        Case "TaskRequestAcceptItem" 
         Set C = I 
         TimeOf = C.Start 
         Set C = Nothing 
    
        Case "TaskRequestDeclineItem" 
         Set D = I 
         TimeOf = D.Start 
         Set D = Nothing 
    
        Case "TaskRequestItem" 
         Set Q = I 
         TimeOf = Q.Start 
         Set Q = Nothing 
    
        Case "TaskRequestUpdateItem" 
         Set U = I 
         TimeOf = U.Start 
         Set U = Nothing 
    
        Case Else 
         TimeOf = I.CreationTime 
        End Select 
    
    End Function 
    
    +0

    안녕하세요. 답장을 보내 주셔서 감사합니다. 죄송합니다. 지금은 Chtristmas 공휴일에있는 것처럼 시험 할 수는 없지만 귀하의 설명을 신뢰할 수 있으므로 귀하의 솔루션을 수락하십시오. 1 월 초에 결과를 게시합니다. 시즌 인사말 - MikeD – MikeD