
Entre tanto ingeniero, yo me considero un albañil de software. No soy informático ni de profesión ni de formación; soy funcionario, mi formación es humanística y soy autodidacta. Sin embargo tengo bastante oficio a base de mucha experiencia porque, durante años, Access ha sido mi gran amor, mi herramienta en el trabajo y mi secretaria. En mi juventud, después de algún escarceo con GWBasic, viví un romance apasionado con QuickBasic, una relación fría y formal con dBase, inicié un noviazgo con VB y, finalmente, me casé con Access.
En Access 2007 es muy fácil añadir un botón a un formulario para que se puedan agregar contactos desde Outlook o guardar el registro de nuestro formulario como un contacto de Outlook. Basta con sólo seguir unos pasos.
La tabla que usemos para los contactos tiene que tener unas características concretas. Sin entrar ahora en detalle de cuáles son éstas, la forma más sencilla de conseguirlo es crear la tabla usando la plantilla "Contactos" en "Plantillas de tabla", en la pestaña "Crear", grupo "Tablas" de la cinta de opciones.

La tabla se genera automáticamente con todos los campos necesarios. Guardamos la tabla como "Contactos" y, pulsando directamente en la opción "Formulario", también de la pestaña "Crear", se genera, sin más, un formulario de "Contactos" completo


Ahora debemos crear el código para interactuar con Outlook. De momento, nos centraremos en "Agregar contacto desde Outlook" y luego no habrá más que repetir el proceso para "Guardar como contacto de Outlook"

Pasamos el formulario a la vista "Diseño" y añadimos un botón. Se abrirá la ventana del asistente, pero en esta ocasión no nos sirve de mucho; mejor establecemos las propiedades manualmente. Le cambiamos el nombre, las propiedades "Título", "Organización de pies de imagen", "Imagen" y estilo del fondo para que quede más bonito.
El código irá en el evento clic del botón

Usar un procedimiento de evento
En la propiedad del botón "Al hacer clic" podemos poner [Procedimiento de evento] y luego en el editor de VBA, crear un procedimiento como éste:

Private Sub btnAgregarOutlook_Click()
DoCmd.RunCommand acCmdAddFromOutlook
End Sub
Usar una macro
El código es tan sencillo, una única línea de código, que parece que no merece la pena usar una macro en su lugar. Sin embargo, una macro incrustada es una buena alternativa, pues en lo sucesivo, al copiar y pegar nuestro botón, también se copia y pega la macro que lleva incrustada.

Si, en vez de seleccionar [procedimiento de evento] en la propiedad "Al hacer clic", pulsamos sobre el botón con los tres puntos que aparece a la derecha y elegimos el Generador de macros", sólo tenemos que elegir la acción "Agregar comando" y el comando "Agregar desde Outlook" para crear una macro incrustada que consiga el mismo efecto que con el código DoCmd.RunCommand acCmdAddFromOutlook

Es decir, que para agregar un contacto desde Outlook podemos utilizar el código
DoCmd.RunCommand acCmdAddFromOutlook
O la macro
EjecutarComando AgregarDesdeOutlook
Ya sólo nos queda probar. Pasamos a vista formulario, presionamos el botón y Voilá!

Podemos repetir los mismos pasos para el botón "Guardar como contacto de Outlook", sabiendo que en este caso el código sería:
DoCmd.RunCommand acCmdSaveAsOutlookContact
Y la macro:
EjecutarComando GuardarComoContactoDeOutlook
Quizás queramos usar como contactos una tabla que no hayamos generado con la plantilla, por ejemplo, porque estamos aprovechando una aplicación o unos datos antiguos. Si hemos usado una macro, no tenemos más que copiar y pegar los botones en el viejo formulario y, si lo hemos hecho con código, tendremos además que crear el código de los eventos.
Es muy sencillo y en un instante ya lo estamos probando, y… ¡No funciona!
¿Qué está ocurriendo?
Ya habíamos comentado que la tabla debe tener una características concretas que la plantilla nos las daba hechas.
De alguna forma debemos decirle a Outlook qué campos de nuestra tabla se corresponde con cada uno de su plantilla. La forma de hacerlo es creando o modificando para esa tabla la propiedad WSSTemplateID de manera que tenga el valor 105 y, para cada uno de los campos que lo precisen, la propiedad WSSFieldID de manera que indique con qué campo de la plantilla se corresponde.
En el Access Team Blog explican cómo modificar esas propiedades y en mi página hay un complemento para hacerlo fácilmente.
Estas propiedades sirven para más tipos de plantillas que la de contactos. Si su nombre empieza por WSS es porque hacen referencia a plantillas de SharePoint y les vamos a encontrar especial utilidad en este entorno, pero todo eso es ya materia suficiente para tratar en un artículo aparte.
Página del autor: http://jbengoechea.com/