VBA не может отправить встречу календаря - PullRequest
5 голосов
/ 30 сентября 2011

Когда я вручную создаю напоминание / встречу в календаре, я могу затем нажать «Пригласить участников», выбрать приглашаемых людей и нажать «Отправить», и все получат это напоминание / встречу в календаре.

Iиметь следующий код для программного напоминания, но оно не будет отправлено предполагаемым получателям.Если я открою напоминание после запуска сценария и нажму «Пригласить участников», я увижу, что список заполнен людьми, которым я хочу отправить напоминание, поэтому я не совсем уверен, почему он не отправляет напоминаниеих.

Кто-нибудь может пролить свет на это для меня?

Private Function CreateAppointment(SubjectStr As String, BodyStr As String, StartTime As Date, EndTime As Date, AllDay As Boolean)
    Dim olApp As Outlook.Application
    Dim Appt As Outlook.AppointmentItem
    ' Only create the reminder if there's no duplicate
    If (CheckForDuplicates(SubjectStr) = False) Then
        Set olApp = CreateObject("Outlook.Application")
        Set Appt = olApp.CreateItem(olAppointmentItem)
        Appt.Recipients.Add ("John Doe")
        Appt.Recipients.ResolveAll
        Appt.Subject = SubjectStr
        Appt.Start = StartTime
        Appt.End = EndTime
        Appt.AllDayEvent = AllDay
        Appt.Body = BodyStr
        Appt.ReminderSet = True
        Appt.Save
        Appt.Send
    End If
    Set Appt = Nothing
    Set olApp = Nothing
End Function

Ответы [ 2 ]

5 голосов
/ 08 октября 2011

Встреча - это особый тип встречи - встреча, на которую приглашаются другие люди.

Чтобы назначить встречу, вам нужно сделать больше, чем просто пригласить участников.Вам необходимо установить статус «Встреча».Добавьте это к своему коду:

Appt.MeetingStatus = olMeeting

Также обратите внимание, что вы установили напоминание, но не установили время напоминания.Например,

Appt.ReminderMinutesBeforeStart = 30

Наконец, если это Outlook VBA, почему вы используете CreateObject?Вы должны использовать нативный объект Application для получения всех ваших объектов.

т.е. вместо

Set olApp = CreateObject("Outlook.Application")

вы бы использовали

Set olApp = Outlook.Application

HTH

0 голосов
/ 18 мая 2018

У меня была такая же проблема, я не получил ее, пока не заменил

Appt.Recipients.Add ("John Doe")
Appt.Recipients.ResolveAll

С

Appt.RequiredAttendees = "john.doe@email.com"

Привет

Chris

...