VBA no puede enviar una cita del calendario
outlook-vba appointment (1)
Una reunión es un tipo específico de cita, una cita a la que otras personas están invitadas.
Para hacer una cita, es necesario hacer algo más que invitar a los asistentes. Debe establecer el estado en ''Reunión''. Agregue esto a su código:
Appt.MeetingStatus = olMeeting
También tenga en cuenta que estableció un recordatorio, pero no estableció una hora de recordatorio. Por ejemplo,
Appt.ReminderMinutesBeforeStart = 30
Finalmente, si esto es Outlook VBA, ¿por qué está utilizando CreateObject? Debería utilizar el objeto de aplicación nativo para derivar todos sus objetos.
es decir, en lugar de
Set olApp = CreateObject("Outlook.Application")
usarías
Set olApp = Outlook.Application
HTH
Cuando hago un recordatorio / cita de calendario manualmente, puedo hacer clic en "Invitar asistentes" y elegir a las personas a las que invitar y luego hacer clic en "Enviar" y todos recibirán ese recordatorio / cita del calendario.
Tengo el siguiente código para hacer un recordatorio programáticamente, pero no se enviará a los destinatarios previstos. Si abro el recordatorio después de ejecutar el script y hago clic en "Invitar asistentes", veo que la lista está completa con las personas a las que quiero enviar el recordatorio, por lo que no estoy seguro de por qué no está enviando el recordatorio a ellos.
¿Alguien puede arrojar algo de luz sobre esto para mí?
Private Function CreateAppointment(SubjectStr As String, BodyStr As String, StartTime As Date, EndTime As Date, AllDay As Boolean)
Dim olApp As Outlook.Application
Dim Appt As Outlook.AppointmentItem
'' Only create the reminder if there''s no duplicate
If (CheckForDuplicates(SubjectStr) = False) Then
Set olApp = CreateObject("Outlook.Application")
Set Appt = olApp.CreateItem(olAppointmentItem)
Appt.Recipients.Add ("John Doe")
Appt.Recipients.ResolveAll
Appt.Subject = SubjectStr
Appt.Start = StartTime
Appt.End = EndTime
Appt.AllDayEvent = AllDay
Appt.Body = BodyStr
Appt.ReminderSet = True
Appt.Save
Appt.Send
End If
Set Appt = Nothing
Set olApp = Nothing
End Function