jueves, 7 de marzo de 2019

VBA: Crear tareas en Outlook desde Excel

El trabajo de hoy consiste en generar tareas de Outlook desde nuestro Excel, pero además la crearemos en la subcarpeta de tareas que queramos (en lugar de la carpeta por defecto).

En mi caso he creado en mi Outlook, una carpeta dentro de las tareas que he llamado 'Prueba':

VBA: Crear tareas en Outlook desde Excel


Notemos como de momento no existe ninguna tarea...

Comenzaremos insertando un módulo estándar en nuestro proyecto de VB:

Sub CrearTareaOutlook()
'OJO Añadir la referencia 'Microsoft Outlook 16.0 Object Library'
On Error GoTo Trata_Error     'control de errores genérico...
Dim olApp As Object, objNS as object, defaultTasksFolder as object, subFolder as object, OlTask As Object

'Iniciamos MS Outlook... si no estuviera ya abierto
On Error Resume Next
Set olApp = GetObject(, "Outlook.Application")
If Err.Number <> 0 Then 'si no está abierto
  Set olApp = CreateObject("Outlook.Application")
End If
On Error GoTo 0

'las siguientes líneas permiten añadir la nueva tarea
'en la carpeta que queramos....
Set objNS = olApp.GetNamespace("MAPI")
Set defaultTasksFolder = objNS.GetDefaultFolder(olFolderTasks)
Set subFolder = defaultTasksFolder.Folders("Prueba") 'Reemplaza 'Prueba' con el nombre de la subcarpeta que quieras
'definimos el objeto Tarea dentro de la Subcarpeta
Set OlTask = subFolder.Items.Add(olTaskItem)

'y asignamos valores a las propiedades de la Tarea
With OlTask
    .Display    'la mostramos / hacemos visible (si así lo queremos)
    
    .Subject = "Cargado desde Excel"         'asunto
    .StartDate = "01/02/2019"    'Fecha de inico: dd/mm/yyyy
    .DueDate = "11/02/2019"              'Fecha de vencimiento
    .Status = 3         '0=no comenzada, 1=en curso, 2=completada, 3=a la espera de otra persona, 4=aplazada
    .Importance = 2     '0=baja, 1=normal, 2=alta (Prioridad)
    .ReminderSet = True 'check de Aviso True/False
    .ReminderTime = "05/02/2019 12:30"  'fecha de aviso
    .Categories = "Categoría roja"    'Categoria
    .PercentComplete = 13   '% completado
    .Body = "Prueba de crear tarea desde una macro de Excel"    'Cuerpo de la tarea...
    
    .Save       'se guarda la tarea
    .Close (olPromptForSave)     'cerramos la tarea
End With


Trata_Salida:
    On Error Resume Next
    Set OlTask = Nothing
    Set subFolder = Nothing
    Set defaultTasksFolder = Nothing
    Set objNS = Nothing
    Set olApp = Nothing
    Exit Sub

Trata_Error:
    MsgBox "Ha ocurrido el siguiente error" & vbCrLf & _
    "Número error: " & Err.Number & vbCrLf & _
    "Descripción del error: " & Err.Description, _
    vbCritical, "FALLOOOOOOO!"
    Resume Trata_Salida
End Sub



Tras ejecutar la macro comprobamos la carpeta de tareas de Outlook

VBA: Crear tareas en Outlook desde Excel



Si editamos la tarea comprobaremos los datos cargados desde la macro:

VBA: Crear tareas en Outlook desde Excel

2 comentarios:

  1. como hacer para que aparezca insertado en el calendario? gracias

    ResponderEliminar

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