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.
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.
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