| Artículos | 01 NOV 2004

Aprovechar Outlook desde MS Office (I)

Tags: Histórico
Rodolfo de Benito.
Si los programadores de virus pueden utilizar Visual Basic para Aplicaciones junto con la automatización para propagar sus virus ¿Por qué no emplear este sistema en nuestro propio beneficio? En líneas generales, la automatización consiste en llamar y utilizar objetos de una aplicación desde otra. En los trucos siguientes veremos cómo usarla para interactuar con Outlook y crear contactos, tareas, notas y mensajes de correo desde cualquiera de las aplicaciones Office.

Cómo crear un nuevo contacto Outlook desde una aplicación Office
Para ilustrar el uso de la automatización con Outlook podemos empezar por algo sencillo como generar un nuevo contacto desde, por ejemplo, Excel. La idea consiste en crear una rutina VBA desde la hoja de cálculo y asociar su ejecución a un botón. Al pulsarlo se mostrará el formulario que Outlook utiliza para rellenar los datos de un contacto. Veamos los pasos a seguir:
1. Cree una nueva hoja de cálculo y acceda al Editor de Visual Basic (pulse la combinación de teclas ALT+F11).
2. Inserte un nuevo módulo seleccionando en el menú del Editor Insertar » Módulo.
3. Para llamar a Outlook es necesario referenciar su librería de objetos. Por tanto, seleccione en el menú Herramientas » Referencias y marque la casilla correspondiente a Microsoft Outlook Object Library.
4. Teclee el código siguiente dentro del módulo:

Option Explicit
Sub llamadaOutLook()
Dim objOutlook As Object
Dim objItem As Object
‘Genera un objeto Outlook
Set objOutlook = CreateObject(“Outlook.Application”)
‘Crea un nuevo contacto
Set objItem = objOutlook.CreateItem(olContactItem)
‘Muestra el formulario para rellenar los datos del contacto
objItem.Display
‘Cierra Outlook
Set objOutlook = Nothing
End Sub

5. Salga del Editor pulsando la combinación de teclas ALT+Q.
6. Active la barra de herramientas Formularios pulsando el botón derecho del ratón sobre cualquier barra de herramientas y seleccionando su nombre.
7. Utilice la barra de herramientas anterior para insertar un botón en su hoja de cálculo y asígnele la macro llamadaOutlook.
Sólo le queda probar su funcionamiento pulsando en el botón. Si todo es correcto verá un formulario para añadir un contacto. Recuerde que puede emplear este truco también desde Word, Access o cualquier otra aplicación Office.

Nueva tarea, cita, nota o mensaje en Outlook
Complementando el truco anterior, vamos a ver que también es posible crear otros objetos Outlook además de los contactos. La clave está en modificar el parámetro del método CreateItem. Por ejemplo, si sustituimos la línea Set objItem = objOutlook.CreateItem(olContactItem) por Set objItem = objOutlook.CreateItem(olTaskItem) conseguiremos crear una nueva tarea.
Seguidamente indicamos los parámetros y el tipo de objeto que les corresponde:
- olTaskItem para crear una tarea.
- olAppointmentItem para una cita.
- olMailItem para un mensaje de correo.
- olNoteItem para una nota.
El inconveniente que presenta este truco es que el objeto creado está en blanco y el usuario es responsable de rellenar los datos de la tarea, cita, nota, etc.

Cómo agregar y rellenar una tarea Outlook desde Access
Mejorando el truco anterior, suponga que desea generar desde Access una nueva tarea y rellenar sus campos sin intervención del usuario. En este truco verá que también es posible rellenarlos utilizando la automatización.
Imagine un formulario Access con información sobre los contratos del personal de una empresa y suponga que necesita un botón para que genere una tarea, por ejemplo, con vencimiento el mes que viene (a partir del momento actual) que le recuerde cada dos horas la revisión de los nuevos contratos.
Veamos cómo podemos llevarlo a cabo:
1. Abra una base de datos Access y vaya a la vista de diseño de un formulario.
2. Acceda al Editor de Visual Basic y referencie la librería Microsoft Outlook Object Library (ver primer truco).
3. Inserte un nuevo módulo y teclee el código siguiente:

Option Compare Database
Sub tareaOutLook()
Dim appOutLook As Outlook.Application
Dim tareaOutLook As Outlook.TaskItem
Set appOutLook = CreateObject(“Outlook.Application”)
Set tareaOutLook = appOutLook.CreateItem(olTaskItem)
With tareaOutLook
.Subject = “Contratación de personal”
.Body = “Revisar los contratos de las nuevas incorporaciones”
.ReminderSet = True
‘Recordar cada dos horas a partir de ahora
.ReminderTime = DateAdd(“h”, 2, Now)
‘La fecha de vencimiento es dentro de un mes
.DueDate = DateAdd(“m”, 1, Now)
.ReminderPlaySound = True
‘Indique su propio archivo de sonido
.ReminderSoundFile = “C:\Multimedia\ding.wav”
.Save
End With
End Sub

4. Salga del editor e inserte un botón de comando. Si se activa el asistente para asociar una acción al botón, cancélelo.
5. Pulse con el botón derecho del ratón en el botón, seleccione Generar evento, elija Generador de código y pulse Aceptar.
6. El Editor de Visual Basic se abrirá nuevamente y creará una nueva subrutina. Teclee tareaOutLook dentro de ella. Por ejemplo, si el botón de comando se llama Comando1, el código resultante sería:

Private Sub Comando1_Click()
tareaOutLook
End Sub

7. Salga de la vista diseño y pruebe el funcionamiento del botón.
Observe que el recordatorio es cada dos horas a partir del momento en el que se genera la tarea y que la fecha de vencimiento es justo un mes posterior. Para ello se emplea la función DateAdd propia de Access (consulte la ayuda sobre esta función para saber qué parámetros admite). Por tanto, si desea probar este truco en otras aplicaciones Office, es necesario que modifique las líneas que contienen dicha función para adaptarlas según corresponda.

Cómo enviar un mensaje Outlook utilizando datos de la hoja de cálculo
En muchas ocasiones no basta con usar la automatización con Outlook para crear una tarea o un mensaje de correo. También es necesario que los datos que contenga procedan de la aplicación origen.
Por ejemplo, suponga una plantilla de factura creada en Excel que disponga de un botón para enviar automáticamente un mensaje de correo al cliente de dicha factura. Dicho correo notificará la emisión de la factura e incluirá el importe, fecha de emisión y número de pedido al que referencia, datos que tomará de la propia hoja de cálculo.
El proceso para llevar a cabo este ejemplo es similar al de los trucos anteriores. A continuación puede ver el código que debe introducir en un nuevo módulo de Visual Basic. Observe que para extraer el nombre del cliente, número de pedido, fecha de emisión de la factura e importe utilizamos la propiedad Cells(nº de fila, nº de columna).Value. Obviamente el código presentado en este truco no funcionará correctamente si las celdas referenciadas están vacías y es necesario que el lector modifique los argumentos de Cells según los datos de su hoja de cálculo.

Sub EnviarMensaje()
Dim objOutlook As Outlook.Application
Dim objOutlookMsg As Outlook.MailItem
Dim objOutlookDest As Outlook.Recipient
‘Inicia Outlook
Set objOutlook = CreateObject(“Outlook.Applicatio

Contenidos recomendados...

Comentar
Para comentar, es necesario iniciar sesión
Se muestran 0 comentarios
X

Uso de cookies

Esta web utiliza cookies técnicas, de personalización y análisis, propias y de terceros, para facilitarle la navegación de forma anónima y analizar estadísticas del uso de la web. Consideramos que si continúa navegando, acepta su uso. Obtener más información