Verzögern von Besprechungseinladungen in Outlook 2010 - vba

1

Ich versuche, einen Code zu schreiben, um eine Besprechungseinladung zu planen und das Versenden an die Teilnehmer zu einem späteren Zeitpunkt automatisch zu verzögern, d. H. Das Versenden einer Besprechungseinladung zu verzögern

Unten ist der Code, aber an der Stelle, an der die Einladung 30 Minuten später gesendet werden soll, wird ein Fehler angezeigt.

Fehlerzeile:

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

Werde mich wirklich über Hilfe freuen. Danke vielmals

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
Adsar
quelle
Was ist die Fehlermeldung? Die TIMEVALUE-Funktion gibt eine Seriennummer einer Zeit zurück. Ich glaube nicht, dass du das willst?
Dave
Es gibt Debug-Fehler. Das Makro funktioniert einwandfrei, bis die Application.wait-Syntax, nach der ich suche, die Übermittlung der Besprechungseinladung verzögert
Adsar
Diese Frage unterscheidet sich zwar in einigen Punkten, ist jedoch auch das gleiche Thema wie Ihre andere Frage: superuser.com/questions/1260042/… Es gibt verschiedene Möglichkeiten, um dieses Problem zu beheben: Verwenden Sie die Schaltfläche "Bearbeiten" in Ihrer vorherigen Frage, um sie wesentlich zu ändern und diese Frage zu löschen. Markieren Sie eine Antwort für die andere Frage als akzeptiert, damit sie geschlossen werden kann, oder löschen Sie die andere Frage vollständig. Was nicht passieren sollte, ist, dass Sie die ältere Frage entweder inakzeptiert oder offen lassen.
music2myear
Ich habe die vorherige Frage gelöscht
Adsar

Antworten:

0

Application.Wait funktioniert nicht mit Outlook können Sie entweder die Doevent Funktion mit einem Timer oder der Sleep Funktion

Verwenden Doevent Dies ist die beste Option, da Sie nach dem Starten des Makros weiterarbeiten können. Das Problem tritt auf, wenn Sie es zu häufig verwenden:

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

Im Energiesparmodus müssen Sie die Funktion deklarieren und können erst dann weiterarbeiten, wenn die Nachricht gesendet wurde. 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 andere Problem notieren, das mit behoben wird .Display um das Programm zum Laufen zu bringen)

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
Jonathan
quelle