miércoles, 29 de agosto de 2018

VBA: Modificar Citas de Outlook desde Excel

Hoy veremos una variante de unos artículos publicados sobre Outlook y Excel (aquí y sobre todo aquí) que servirá para contestar la duda de un lector, que planteaba cuál sería la forma de modificar una cita de un calendario de Outlook desde Excel.

La idea del asunto es poder localizar una Cita concreta, en el ejemplo siguiente la buscaremos por dos criterios frecuentes:
1. por fechas
2. por el asunto
Para luego modificar alguna de sus propiedades... aprovechando la doble característica de lectura-escritura.


Así pues, insertaremos el siguiente procedimiento en un módulo estándar:

Sub ModificacionCitasdeOutlook()
'petición lector:
'solo necesitaria saber como puedo hacer para que sobre escriba si una cita es duplicada o modificada.

Dim olApp As Object, olNS As Object, olCalendario As Object
Dim Cita As Object
Dim fila As Long

'El rango de fecha de la Cita buscada... (si es que va a ser este el criterio!!).
Dim FechaIni As Date, FechaFin As Date
FechaIni = DateSerial(2018, 7, 10) + TimeSerial(10, 0, 0)  
FechaFin = DateSerial(2018, 7, 10) + TimeSerial(10, 30, 0) 

'Trabajamos sobre Outlook
Set olApp = CreateObject("Outlook.Application")
Set olNS = olApp.GetNamespace("MAPI")
'declaramos el objeto de la carpeta de los Calendarios
'(9 equivale a la carpeta del Calendario)
Set olCalendario = olNS.GetDefaultFolder(9)

'Ordenamos las Citas por Fecha de Inicio
Set misCitas = olCalendario.Items
misCitas.Sort "[Start]", False

'recorremos todas las citas del calendario
For Each Cita In misCitas
    'para cambiar/modificar por fecha o por Asunto
    'If Cita.Start >= FechaIni And Cita.Start <= FechaFin Then
    'si el asunto es...
     If Cita.Subject = "Borrar-Excelforo" Then
        'vemos en la ventana de inmediato el Asunto antes de la modificación
        Debug.Print Cita.Subject
        Cita.Subject = "Cambiado"   'realizamos el cambio por este nuevo asunto
        Cita.Save       'guardamos la cita
        'y volvemos a verificar en la ventana de inmediato como ha quedado
        Debug.Print Cita.Subject
    End If
Next Cita

MsgBox "Cita modificada..."

'liberamos memoria
Set Cita = Nothing
Set olCalendario = Nothing
Set olNS = Nothing
Set olApp = Nothing

End Sub

Listo. Puedes comprobar que si existe esa cita, el cambio se ha realizado correctamente....

No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.