Задержка приглашения на собрание в Outlook 2010 - vba

494
Adsar

Я пытаюсь написать код, чтобы запланировать приглашение на собрание и автоматически отложить отправку участникам позже, т.е. отложить отправку приглашения на собрание.

Ниже приведен код, но он дает ошибку в тот момент, когда я хочу, чтобы приглашение было отправлено через 30 минут.

Строка ошибки:

Application.Wait (Now + TimeValue ("06:30:00"))

Буду очень признателен за помощь в этом. Большое спасибо

Sub Book_meeting_room()   Dim olApp As Outlook.Application Dim olApt As AppointmentItem  Set olApp = Outlook.Application 'Creating Outlook Session Set olApt = olApp.CreateItem(olAppointmentItem) 'Creating an Appointment  With olApt  .MeetingStatus = olMeeting 'olAppointmentItem with Meeting status olMeeting 'becomes a OL Meeting Item. .Subject = "Room 1" 'Subject .Start = #11/20/2017 8:30:00 AM# 'Enter Date + Time here. .Duration = 240 'In Minutes .Location = "Office" 'Location of the meeting. .Recipients.Add ("Margaret") 'Recipient Name, Alias, or any other Attribute. .BusyStatus = olFree .ReminderSet = True .ReminderMinutesBeforeStart = 20  End With  Application.Wait (Now + TimeValue("06:30:00")) 'defer 06hrs and 30mins. olApt.Send 'Sending Mail. Set olApt = Nothing  MsgBox "Invite Sent", vbInformation  End Sub 
1
Что такое сообщение об ошибке? Функция TIMEVALUE возвращает серийный номер времени. Я не думаю, что это то, что вы хотите? Dave 6 лет назад 0
Это дает ошибку отладки .. макрос работает нормально до синтаксиса Application.wait, который я ищу, чтобы задержать доставку приглашения на встречу Adsar 6 лет назад 0
Несмотря на то, что этот вопрос в чем-то отличается, он также совпадает с другим вопросом: https://superuser.com/questions/1260042/delaying-meeting-invitations-in-outlook-2010. Существует несколько возможных способов исправить эту ситуацию: используйте кнопку «Изменить» на предыдущем вопросе, чтобы существенно изменить его и удалить этот вопрос. Отметьте ответ как принятый для другого вопроса, чтобы его можно было закрыть, или полностью удалите другой вопрос. Чего не должно случиться, так это чтобы вы оставили старый вопрос либо непринятым, либо открытым. music2myear 6 лет назад 0
Возможное дублирование [Задержка приглашений на собрания в Outlook 2010] (https://superuser.com/questions/1260042/delaying-meeting-invitations-in-outlook-2010) music2myear 6 лет назад 0
Я удалил предыдущий вопрос Adsar 6 лет назад 0

1 ответ на вопрос

0
Jonathan

Application.Waitне работает с Outlook, вы можете использовать Doeventфункцию с таймером или Sleepфункцию

Использование Doevent- лучший вариант, потому что он позволит вам продолжать работать после запуска макроса, проблема возникает, если вы чрезмерно используете его:

Public Sub Pause(Seconds As Single) Dim TimeEnd As Single TimeEnd = Timer + Seconds While Timer < TimeEnd DoEvents Wend End Sub  

В режиме сна вам нужно объявить функцию, и она больше не будет работать до тех пор, пока сообщение не будет отправлено. Вы заявляете это с помощью:

Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 

ваш код выглядит следующим образом (вы также можете отметить еще одну дополнительную проблему, которая будет решена, .Displayчтобы заставить программу работать)

Sub Book_meeting_room()  Dim olApp As Outlook.Application Dim olApt As AppointmentItem  Set olApp = Outlook.Application 'Creating Outlook Session Set olApt = olApp.CreateItem(olAppointmentItem) 'Creating an Appointment  With olApt  .MeetingStatus = olMeeting 'olAppointmentItem with Meeting status olMeeting 'becomes a OL Meeting Item. .Subject = "Room 1" 'Subject .Start = #11/20/2017 8:30:00 AM# 'Enter Date + Time here. .Duration = 240 'In Minutes .Location = "Office" 'Location of the meeting. .Recipients.Add ("Margaret") 'Recipient Name, Alias, or any other Attribute. .BusyStatus = olFree .ReminderSet = True .ReminderMinutesBeforeStart = 20 .Display  End With  Pause (23400) 'defer 06hrs and 30mins. 'Sleep (23400) 'also defer 06hrs and 30mins eventually  olApt.Send 'Sending Mail. Set olApt = Nothing  MsgBox "Invite Sent", vbInformation  End Sub