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