Translate

jueves, 7 de junio de 2012

Registro masivo de Tareas en Outlook desde Excel mediante VBA

El siguiente ejemplo demuestra lo útil del editor de Visual Basic de MsExcel combinado con el calendario de MSOutlook para administrar tareas y evitar problemas relacionados al cumplimiento de plazos.

Sirve para todo tipo de usuario que utilice Outlook, secretarias, contables, administrativos, logisticos, jefes, gerentes, etc...

Muchas veces se nos complica el cumplimiento de plazos: Vencimiento de impuestos, contratos de trabajos, cartas fianzas, cobro de cheques, etc, etc

El calendario de Outlook nos avisa del vencimiento, sin embargo si los registros son muchos Excel nos puede ayudar...siga estos pasos:

Cree un plantilla igual a la siguiente imagen:


Para crear el botón guiese del ejemplo anterior (El del libro Mayor) y presione el botón derecho del mouse para seleccionar Ver Código (View Code)

El botón debe de tener como propiedad name = cmd_Outlook




Copie y pegue el siente código de programación:

Private Sub cmd_Outlook_Click()
    Dim ol As New Outlook.Application
    Dim ns As Outlook.Namespace
    Dim itmApoint As Outlook.AppointmentItem
    Dim Tarea As Long
        For Tarea = 5 To Range("A65536").End(xlUp).Row
            If Cells(Tarea, 7) = "" Then
                Set ns = ol.GetNamespace("MAPI")
                Set itmApoint = ol.CreateItem(olAppointmentItem)
                With itmApoint
                .Start = DateSerial(Year(Cells(Tarea, 1)), Month(Cells(Tarea, 1)), Day(Cells(Tarea, 1))) + TimeSerial(Hour(Cells(Tarea, 2)), Minute(Cells(Tarea, 2)), Second(Cells(Tarea, 2)))
                .End = DateSerial(Year(Cells(Tarea, 3)), Month(Cells(Tarea, 3)), Day(Cells(Tarea, 3))) + TimeSerial(Hour(Cells(Tarea, 4)), Minute(Cells(Tarea, 4)), Second(Cells(Tarea, 4)))
                .Subject = Cells(Tarea, 5)
                .Body = Cells(Tarea, 6)
                .Importance = olImportanceNormal
                .Save
                End With
                Cells(Tarea, 7) = "REGISTRADO"
            End If
    Next Tarea
End Sub


Desde el editor de Visual basic presione el menú Herramientas y seleccione la orden Referencias



Busque la referencia a Microsoft Outlook y presione aceptar.





Cierre Visual basic (Alt + F4).

Luego digite algo similar a lo registrado en la fila 5 de la siguiente imagen:


Presione el botón REGISTRAR TAREAS EN OUTLOOK.

Revise su Outlook debera de haberse creado una cita similar a la siguiente imagen:


Ahora imagime si tuviera un listado de 100 ó mas contratos de trabajo en Excel. Con un simple click en le botón REGISTRAR TAREAS EN OUTLOOK las agregrará en segundos.



5 comentarios:

  1. Esta buenisimo y primero que todo felicitaciones y gracias por el aporte.
    Una consulta. Si quisiera agregar la ubicación a este (campo que posee la cita) como se podría hacer?

    Saludos!

    ResponderEliminar
  2. Entre las líneas .body y .importance coloca la siguiente línea:

    .Location = " >>>> aquí coloca el nombre de la sala<<<<< "

    no quitar las ""

    Saludos

    ResponderEliminar
  3. algo estoy haciendo mal ya que no la puedo ejecutar, entendi que hay que incrustar un cmd button y en propiedades cambiar el name del boton, posteriormente en la hoja que tenemos activa entramos al codigo y pegamos el codigo que posteaste, en automatico se ligaria al button o que tengo que hacer que no me muestra nada, perdon soy principiante en esto, saludos

    ResponderEliminar
  4. amigos y si requiero enviar esta cita a otra persona como seria la linea de codigo, si colocare el nombre del correo en la ultima columna de este archivo.

    ResponderEliminar
  5. Hola, muchísimas gracias por el código. Tengo una consulta, cómo hacer para:

    1. Guardar el evento como una "Tarea" de outlook en vez de una "Cita". Las citas aparecen en el calendario y las tareas en la sección de tareas abajo de este

    2. Asignar la tarea a usuarios de correo, por ejemplo añadiendo una nueva columna con el/los destinatario/s en excel, de manera de que al ejecutar la macro, se envíe un menaje a la dirección de correo de los usuarios sobre la tarea y que ellos la puedan aceptar en incorporar a su calendario.

    Desde ya te agradezco mucho!

    ResponderEliminar