Atraindo convites de reunião no Outlook 2010 - vba


1

Estou tentando escrever um código para agendar um convite para a reunião e atrasar o envio para os participantes em uma data / hora posterior automaticamente, ou seja, adiar o envio de um convite para a reunião

Abaixo está o código, mas está dando um erro no ponto em que eu quero que o convite seja enviado 30 minutos depois.

Linha de erro:

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

Vai realmente apreciar ajuda sobre isso. Muito Obrigado

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

Qual é a mensagem de erro? A função TIMEVALUE retorna um número de série de um tempo. Eu não acho que isso é o que você quer?
Dave

Ele está dando erro de depuração .. a macro funciona bem até a sintaxe Application.wait que estou procurando para atrasar a entrega do convite de reunião
Adsar

Embora essa questão seja diferente em alguns aspectos, ela também é o mesmo assunto da sua outra pergunta: superuser.com/questions/1260042/… Existem algumas maneiras possíveis de corrigir essa situação: Use o botão Editar na sua pergunta anterior para alterá-la substancialmente e excluir essa pergunta. Marque uma resposta como aceita na outra questão para que ela possa ser fechada ou exclua a outra questão completamente. O que não deve acontecer é que você deixe a pergunta mais antiga inaceitável ou aberta.
music2myear


Eu apaguei a pergunta anterior
Adsar

Respostas:


0

Application.Wait não funciona com outlook você pode usar o Doevent função com um temporizador, ou o Sleep função

Usando Doevent é a melhor opção porque permitirá que você continue trabalhando depois de iniciar a macro, o problema acontece se você usar mais:

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

Com o sono, você precisa declarar a função e ela não permitirá que você trabalhe mais até que a mensagem seja enviada. Você declara isso com:

Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

seu código torna-se como segue (você também pode observar o outro problema adicional que será resolvido com .Display para fazer o programa funcionar)

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.