
Publicat: 1 de gener de 2008
Per José Bengoechea Ibaceta (Chea) - MVP Access
Entre tants enginyers, jo em considero un paleta del software. No sóc informàtic ni de professió ni de formació; sóc funcionari, la meva formació és humanística i sóc autodidacte. Tanmateix conec bastant l’ofici a base de molta experiència perquè, durant anys, Access ha estat el meu gran amor, la meva eina en el treballi la meva secretària. En la meva joventut, després d'alguna divagació amb GWBasic, vaig viure un romanç apassionat amb QuickBasic, una relació freda i formal amb dBase, vaig començar a festejar amb VB i, finalment, em vaig casar amb Access.
A Access 2007 és molt fàcil afegir un botó a un formulari perquè es puguin agregar contactes des d’Outlook o guardar el registre del nostre formulari com un contacte d’Outlook. N'hi ha prou amb només seguir uns passos.

Generar la taula
La taulaque usem per als contactes ha de tenir unes característiques concretes. Sense entrar ara en detall de quines són, la forma més senzilla d'aconseguir-ho és crear la taulala plantilla "Contactes" en "Plantilles de taula", a la pestanya "Crear", grup "Taules" de la cinta d'opcions.

Principi de la pàgina
Generar el formulari
La taulaes genera automàticament amb tots els camps necessaris. Guardem la taulacom a "Contactes" i, polsant directament en l'opció "Formulari", també de la pestanya "Crear", es genera immediatament, un formulari de "Contactes" complet


Principi de la pàgina
Generar el codi
Ara hem de crear el codi per interactuar amb Outlook. De moment, ens centrarem en "Agregar contacte des d'Outlook" i després només caldrà repetir el procés per "Guardar com a contacte d'Outlook"

Passem el formulari a la vista "Disseny" i afegim un botó. S'obrirà la finestra de l'assistent, però en aquesta ocasió no ens serveix de gaire; és millor establir les propietats manualment. Li canviem el nom, les propietats "Títol", "Organització de peus d'imatge", "Imatge" i estil del fons perquè quedi més maco.
El codi anirà en l'esdeveniment clic del botó

Usar un procediment d'esdeveniment
En la propietat del botó "En fer clic" podem posar [Procediment d'esdeveniment] i després en l'editor de VBA, crear un procediment com aquest:

Private subbtnAgregarOutlook_Click()
DoCmd.RunCommand acCmdAddFromOutlook
End Sub
Usar una macro
El codi és tan senzill, una única línia de codi, que sembla que no val la pena substituir-lo per una macro. Tanmateix, una macro incrustada és una bona alternativa, ja que més endavant, quan copiem i enganxem el nostre botó, també es copiarà i enganxarà la macro que porta incrustada.

Si, en comptes de seleccionar [procediment d'esdeveniment] en la propietat "En fer clic", polsem sobre el botó amb els tres punts que apareix a la dreta i triem el “Generador de macros", només haurem de triar l'acció "Agregar ordre" i l’ordre "Agregar des d'Outlook" per crear una macro incrustada que aconsegueixi el mateix efecte que el codi DoCmd.RunCommand acCmdAddFromOutlook

És a dir, que per agregar un contacte des d'Outlook podem utilitzar el codi
DoCmd.RunCommand acCmdAddFromOutlook
o bé la macro
EjecutarComando AgregarDesdeOutlook
Principi de la pàgina
Provar l'aplicació
Ja només l’hem de provar. Passem a vista formulari, premem el botó i Voilá!

Podem repetir els mateixos passos per al botó "Guardar com a contacte d'Outlook", sabent que en aquest cas el codi seria:
DoCmd.RunCommand acCmdSaveAsOutlookContact
i la macro:
EjecutarComando GuardarComoContactoDeOutlook
Principi de la pàgina
Provar amb una taula diferent
Potser voldrem usar com a contactes una taula que no hem generat amb la plantilla, per exemple, perquè estem aprofitant una aplicació o unes dades antigues. Si hem usat una macro, només cal copiar i enganxar els botons en el vell formulari i, si ho hem fet amb codi, haurem de crear, a més, el codi dels esdeveniments.
És molt senzill i en un instant ja ho estem provant, i... No funciona!
Què passa?
Ja havíem comentat que la taulaha de tenir una característiques concretes que la plantilla ens donava fetes.
D'alguna forma li hem de dir a l'Outlook quins camps de la nostra taula es corresponen amb cada un dels camps de la plantilla. La manera de fer-ho és crear o modificar per a aquesta taula la propietat WSSTemplateID de manera que tingui el valor 105 i, per a cada un dels camps que ho necessitin, la propietat WSSFieldID de manera que indiqui a quin camp de la plantilla correspon.
En Access Team Blog s’explica com modificar aquestes propietats i a la meva pàgina hi ha un complement per fer-ho fàcilment.
Aquestes propietats també serveixen per a més tipus de plantilles que la de contactes. Si el nom comença per WSS és perquè fan referència a plantilles de SharePoint i seran especialment útils en aquest entorn, però tot això és ja matèria suficient per a un altre article.