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

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

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

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

приложение.Подождите ( Сейчас + 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
8
задан Adsar
15.02.2023 14:46 Количество просмотров материала 2980
Распечатать страницу

1 ответ

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 

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

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
0
отвечен Jonathan 2023-02-16 22:34

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя

Похожие вопросы про тегам:

calendar
meetings
microsoft-outlook
vba
Вверх