Citas Calendarios Personalizados VBA

 Cita Calendarios Personalizados Excel-Outlook (VBA)

Excel - Outlook

En Office Outlook podemos llegar a tener más de un Calendario, además del calendario principal que por defecto viene con la instalación de Office. Desde Office Excel podemos crearestablecer citas en éstos calendarios personalizados de una manera muy rápida, utilizando código Vba.

  • Establecer cita en calendarios personalizados Vba
  • Enlaces de Interés
  • Desarrollo

Supongamos que se han creado (sub)Calendarios en la Carpeta Calendario de Office Outlook, a los cuales hemos llamado, por ejemplo:

[ pruebas, pruebas b, pruebas c ]

Desde Office Excel, podemos establecer las citas correspondientes a cada (sub)Calendario

Citas Excel a Calendarios personalizados de Outlook

  • Columna A -Identificadores
  • Columna B - Nombres Calendarios
  • Columna C - Fechas

Desde la interfaz de Excel, abrimos Visual basic de Excel [ Alt + F11] e insertar un Módulo Estándar [menú Insertar -> Módulo ]

Por cortesía de Ken Slovak y Michael Bauer resulta lo siguiente:

El método CreateItem utiliza la carpeta principal del tipo de objeto (correo, cita, etc.) :

Set miCita = miOutlook.CreateItem(1)

Por lo que para establecer citas (ó items) en una "determinada" (sub)carpeta, seria necesario

  • Crear el objeto en la carpeta principal (según su tipo) y después "moverlo" a la (sub)carpeta específica (CreateItem)
  • Crear el objeto en la (sub)carpeta determinada por la colección <carpeta>.Items.Add (tipo) (NO por el método CreateItem)

Cómo resultado, el código usando "late binding" :

Sub Agendar_en_miCalendario()
Dim miOutlook AsObject, miCalendario AsObject, miCita AsObject, _
Fila As Integer, uFila As Integer 
uFila = Range("a65536").End(xlUp).Row
On Error GoTo Crear
Set miOutlook = GetObject(, "outlook.application")
If Err = 0 ThenGoTo Creado
Crear:
Err.Clear
Set miOutlook = CreateObject("outlook.application")
Creado:
On Error GoTo0
For Fila = 2 To uFila
' en la col-B se tienen los nombres de los calendarios
Set miCalendario = miOutlook.Session.GetDefaultFolder(9).Folders.Item(Range("b" & Fila).Text)
Set miCita = miCalendario.Items.Add(1)
' en la col-A se tienen los identificadores del recordatorio/cita
miCita.Subject = "Vencimiento de: " & Range("a" & Fila).Value
' en la col-C se tienen las fechas de los vencimientos
miCita.Start = "11:00 am" & Format(Range("c" & Fila).Value, "mm/dd/yyyy")
miCita.End = "11:15 am" & Format(Range("c" & Fila).Value, "mm/dd/yyyy")
miCita.ReminderMinutesBeforeStart = 0 ' se deja en 0 para que avise en ese momento
miCita.ReminderPlaySound = True
miCita.Save
Next
miOutlook.Quit
Set miCita = Nothing
Set miOutlook = Nothing
End Sub

Resultado

Citas en Calendario Outlook

Si se quisiera controlar el tiempo desde la Interfaz de Excel

Citas de Excel a Outlook con Tiempo

  • Columna D - Hora Inicio
  • Columna E - Hora Fin

Cambios a realizar en el código

De esto

Determinación de Fechas - horas Vencimiento

miCita.Start = "11:00 am" & Format(Range("c" & Fila).Value, "mm/dd/yyyy")
miCita.End = "11:15 am" & Format(Range("c" & Fila).Value, "mm/dd/yyyy")

a esto

miCita.Start = Format(Range("d" & Fila).Value, "h:mm AM/PM") & _
Format(Range("c" & Fila).Value, "mm/dd/yyyy")
miCita.End = Format(Range("e" & Fila).Value, "h:mm AM/PM") & _
Format(Range("c" & Fila).Value, "mm/dd/yyyy")

Resultado

Citas Excel - Outlook

 

 

 

Print