Besprechungseinladungen in Outlook 2010 verzögern - vba

545
Adsar

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

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

Fehlerzeile:

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

Wird die Hilfe wirklich zu schätzen wissen. 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 
1
Was ist die Fehlermeldung? Die TIMEVALUE-Funktion gibt eine Seriennummer zurück. Ich glaube nicht, dass du das willst? Dave vor 7 Jahren 0
Es gibt einen Debug-Fehler. Das Makro funktioniert einwandfrei, bis die Application.wait-Syntax, nach der ich suche, die Bereitstellung der Besprechungseinladung verzögert Adsar vor 7 Jahren 0
Diese Frage ist zwar in gewisser Hinsicht anders, es ist jedoch dasselbe Thema wie Ihre andere Frage: https://superuser.com/questions/1260042/delaying-meeting-invitations-in-outlook-2010 Es gibt einige Möglichkeiten, dies zu tun Beheben Sie diese Situation: 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 darf, ist, dass Sie die ältere Frage entweder inakzeptiert oder offen lassen. music2myear vor 7 Jahren 0
Mögliches Duplikat von [Meeting-Einladungen in Outlook 2010 verzögern] (https://superuser.com/questions/1260042/delaying-meeting-invitations-in-outlook-2010) music2myear vor 7 Jahren 0
Ich habe die vorige Frage gelöscht Adsar vor 7 Jahren 0

1 Antwort auf die Frage

0
Jonathan

Application.Waitfunktioniert nicht mit Outlook. Sie können die DoeventFunktion entweder mit einem Timer oder mit der SleepFunktion verwenden

Die Verwendung Doeventist 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