Notifications
Clear all

Macro simples - aviso de reuniao outlook

5 Posts
2 Usuários
0 Reactions
526 Visualizações
(@wiseman)
Posts: 0
New Member
Topic starter
 

Olá, a dúvida é simples pois tenho pouca experiência com macro no Outlook (havia tarbalhado mais com excel).
O codigo deve enviar um email para um email externo, todos os dias, quando houver reuniao em um determinado horário. Segue. A parte em negrito já está dando erro, pode ser algo de formato.
O erro é 'Object varible or with block variable not set'.
Obg!

Sub calendarmsg()

Dim ns As NameSpace
Dim calendar As Object
Dim first As Outlook.AppointmentItem
 
If first.Start = #4/4/2016 9:00:00 AM# Then        'aqui acontece o erro
    objMsg.To = "xxx@xx.com"
    objMsg.Subject = "Meeting at 9"
    objMsg.Send
Else
    objMsg.To = "xxx@xx.com"
    objMsg.Subject = "No Meeting"
    objMsg.Send
End If

Set first = Nothing

End Sub

 
Postado : 04/04/2016 3:00 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Vc declarou mas não instanciou... no momento que a linha com first.start roda, first ainda é nothing... Verifique na janela de variáveis locais, ou inspeção de variáveis !

 
Postado : 04/04/2016 6:27 am
(@wiseman)
Posts: 0
New Member
Topic starter
 

Obrigado, resolvi o problema, só restou um ponto.

Quando substituo Mydate, pela data por extenso, no caso 04/05/2016, funciona perfeitamente.
Como gostaria que rodasse para todos os dias, substutuí esse termo pela variável Mydate, que contém a data do dia (função date). O erro apresentado é 'type mismatch'.
Alguém consegue ajudar? Provavelmente é só algo de sintaxe...

Sub calendarmsg()

Dim CalendarFolder As Folder
Dim first As Outlook.AppointmentItem
Dim Mail As MailItem
Dim Mydate As Date

Set CalendarFolder = Session.GetDefaultFolder(olFolderCalendar)
Set Mail = Application.CreateItem(olMailItem)
Mydate = Date
'MsgBox (Mydate)

For Each first In CalendarFolder.Items

If first.Start = Mydate & #9:00:00 AM# Then
Mail.To = "[email protected]"
Mail.Subject = "Meeting at 9"
Mail.Send
MsgBox ("yes")
Else
'Mail.To = "[email protected]"
'Mail.Subject = "No Meeting"
'Mail.Send
'MsgBox ("no")
End If

Next

End Sub

 
Postado : 05/04/2016 9:14 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

use

If first.Start = Mydate + timeserial(9,0,0) Then
 
Postado : 05/04/2016 9:36 am
(@wiseman)
Posts: 0
New Member
Topic starter
 

Perfeito, muito obrigado!

 
Postado : 06/04/2016 3:01 am