2010-12-06 3 views
2

Я использую VBA для сканирования MAPIFolders для Items, созданного до определенной даты, чтобы переместить их в архив PST. Обычно Item.CreationDate - хороший крючок для поиска «старых» элементов Outlook, но для записей календаря «дата создания» может быть до «даты начала», поэтому для записей календаря я скорее хочу использовать последнее.Найти базовый тип объекта для Outlook MeetingItem

Моя проблема с типом MeetingItem, который может быть

  • встречу, где .GetAssociatedAppointment(False) кажется, работает хорошо
  • принятие Сообщ к получил назначение где .GetAssociatedAppointment(False) аварии

Любая идея, как отличить вышеуказанные случаи от использования правильного базового типа объекта в инструкции Set?

Примечание: пытается осмотреть E в отладчике после того, как было Set всегда приводит к «Outlook обнаружена ошибка и нужно закрыть ...»

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

Запрос типа MeetingItem имеет MessageClass из «IPM.Schedule.Meeting.Request». Тип приема MeetingItem имеет MessageClass из «IPM.Schedule.Meeting.Resp.Pos». Пожалуйста, обратитесь к here за дополнительной информацией о других MessageClass в Outlook 2003. Я проверил следующий код в своем 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

привет и спасибо за ваш ответ; жаль, что я не могу проверить прямо сейчас, поскольку я на праздники Рождества, но я доверяю вашим объяснениям и поэтому принимаю ваше решение. Отправляется в ответ на результаты в начале января. Приветствия сезона - MikeD – MikeD 2010-12-21 08:13:29

Смежные вопросы