Macro para agregar recordatorios en Outlook desde Excel

Para todos aquellos que usamos Outlook de Office como herramienta principal para administrar nuestro correo electrónico, el ejemplo que  les comparto estoy seguro que le podrán encontrar un uso para administrar sus tareas.

Guardar tareas

La macro principalmente guarda en una hoja de Excel la información correspondiente a tareas que progragremos realizar en algún momento, aunque también podemos guardar información de cumpleaños, pagos de servicios o cualquier actividades que necesitemos recordar.

Adicional podemos elegir que las tareas que agreguemos también se agreguen a Outlook de Office para que podamos ser avisados en la fecha y hora que seleccionemos.

El archivo de ejemplo para agregar tareas

Tenemos un formulario donde llenaremos los datos de la tarea a guardar y estos datos se guardarán en la hoja Actividades.

image

Figura 1. Formulario para agregar tareas en Outlook desde Excel.

En caso de elegir la opción Agregar recordatorio en Outlook, agregará una nueva tarea en Outlook de Office y se asignará un recordatorio a la hora ingresada.

En caso de no ingresar hora, por default se tomará las 12:00 a.m.

image

Figura 2. En el apartado Tareas de Outlook de Office veremos las tareas de dimos de alta.

Código de la macro

Nota: Para que la macro funcione correctamente deberemos agregar la referencia Microsoft Outlook 15.0 Object Library en el menú Herramientas > Referencias del IDE de vba .

El siguiente código deberá ir en un módulo normal.

Option Explicit
'
Sub CreateAppointmentsModificada()
'
'Declaración de variables
Dim oApp As Outlook.Application
Dim tsk As Outlook.TaskItem
Dim strTitulo As String
Dim TransRowRng As Range
Dim NewRow As Integer
Dim FechaHora
'
strTitulo = "EXCELeINFO"
'
On Error GoTo ErrorHandler

'Validamos que haya un asunto de la actividad
If UserForm1.txtAsunto.Value = "" Then
    '
    MsgBox "Debes ingresar un asunto.", vbExclamation, strTitulo
    '
Else
    '
    'En caso de continuar
    Set TransRowRng = ThisWorkbook.Worksheets("Actividades").Cells(1, 1).CurrentRegion
    NewRow = TransRowRng.Rows.Count + 1
    With ThisWorkbook.Worksheets("Actividades")
        .Cells(NewRow, 1).Value = UserForm1.txtAsunto.Value
        .Cells(NewRow, 2).Value = UserForm1.txtDescripcion.Value
        .Cells(NewRow, 3).Value = UserForm1.cmbTipo.Value
        .Cells(NewRow, 4).Value = UserForm1.dtFecha.Value
        .Cells(NewRow, 5).Value = UserForm1.txtHora.Value
    End With
    '
    'Iniciamos Outlook en caso de haber elegido el Checkbox
    '
    If UserForm1.chkRecordatorio = True Then
        '
        Set oApp = GetOutlookApp
        If oApp Is Nothing Then
            MsgBox "No se puede iniciar Outlook.", vbInformation, strTitulo
            Unload UserForm1
            Exit Sub
        End If
        '
        Set tsk = oApp.CreateItem(olTaskItem)
        '
        With tsk
            FechaHora = CDate(UserForm1.dtFecha.Value) & " " & UserForm1.txtHora
            '
            .Subject = UserForm1.txtAsunto.Value
            .ReminderSet = True
            .ReminderTime = FechaHora
            .Body = UserForm1.txtDescripcion.Value
            .Save
        End With
    Else
    End If
    MsgBox "Datos dados de alta.", vbInformation, strTitulo
    Unload UserForm1
    '
End If
'
Exit Sub
'
ErrorHandler:
'
MsgBox "Ha ocurrido un error: ", vbExclamation, strTitulo

End Sub
'
Function GetOutlookApp() As Outlook.Application
'Regresamos el objeto Outlook.Application
On Error Resume Next
Set GetOutlookApp = CreateObject("Outlook.Application")
End Function

Nota 2: Para versiones de Windows de 64 bits deberemos leer el siguiente artículo para poder usar el control de Calendario: Usar el control Date and Time Picker (mscomct2.ocx) en Excel sobre Windows 7 y 8 de 64 bits.

Anexos

:: Descargar el ejemplo Agregar recordatorios en Outlook desde Excel.zip

También te podría gustar...