Application.Wait
funktioniert nicht mit Outlook. Sie können die Doevent
Funktion entweder mit einem Timer oder mit der Sleep
Funktion verwenden
Die Verwendung Doevent
ist die beste Option, da Sie damit nach dem Starten des Makros weiterarbeiten können. Wenn Sie es übermäßig verwenden, tritt ein Problem auf:
Public Sub Pause(Seconds As Single) Dim TimeEnd As Single TimeEnd = Timer + Seconds While Timer < TimeEnd DoEvents Wend End Sub
Wenn Sie schlafen, müssen Sie die Funktion deklarieren und können erst dann arbeiten, wenn die Nachricht gesendet wird. Sie erklären es mit:
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Ihr Code wird wie folgt (Sie können auch das zusätzliche Problem beachten, das gelöst wird .Display
, damit das Programm funktioniert)
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