Está en la página 1de 16

Access (mdb):

Acceso a una base de datos Microsoft Access desde Microsoft Word

Os explicamos en este manual cmo obtener e insertar datos de una tabla de una base de datos Microsoft
Access en un documento de Microsoft Word. Explicamos paso a paso cmo agregar una nueva macro y el
cdigo Visual Basic for Applications (VBA) necesario para acceder a una base de datos Access (vlido para
cualquier otro motor de base de datos) y tambin mostramos cmo crear una tabla en Word mediante cdigo VBA.
En realidad simulamos una combinacin de correspondencia personalizada.

Algunas definiciones iniciales (Access, Word).


o

Definicin Microsoft Access.

Definicin Microsoft Word .

Escenario de trabajo, fichero Word .

Creacin de la base de datos Access.

Creacin del mdulo VBA (macro) con el cdigo fuente para acceso a Access.

Ejecucin de la macro en Word para acceso a base de datos Access.

Artculos relacionados.

Crditos.

Algunas definiciones iniciales (Access,


Word)
Definicin Microsoft Access
Microsoft Access es un programa Sistema Gestor de Base de Datos Relacional (SGBDR del ingls Relational
DataBase Management System o RDBMS) creado por Microsoft para uso personal de pequeas organizaciones. Es
un componente de la suite Microsoft Office.
Es un software de gran difusin entre pequeas empresas (PYMES) cuyas bases de datos no requieren de excesiva
potencia, ya que se integra perfectamente con el resto de aplicaciones de Microsoft y permite crear pequeas
aplicaciones con unos pocos conocimientos del Programa. Microsoft Access permite crear formularios para insertar
y modificar datos fcilmente. Tambin tiene un entorno grfico para ver las relaciones entre las diferentes tablas
de la base de datos.
Tiene un sistema de seguridad de cifrado bastante primitivo y puede ser la respuesta a proyectos de programacin
de pequeos y medianos tamaos.
Para bases de datos de gran volumen (de datos o de usuarios) es recomendable usar otros SGBDR como MySQL,
Microsoft SQL Server, Oracle Database, IBM DB2, Firebird, PostgreSQL, etc. Pues Microsoft Access no est
diseada para soportar un gran volumen de datos o un gran nmero de usuarios conectados concurrentemente.

Tampoco est diseada para funcionar a travs de Internet.


Entre sus mayores inconvenientes figuran que no es multiplataforma, slo est disponible para sistemas
operativos de Microsoft. Su uso es inadecuado para grandes proyectos de software que requieren tiempos de
respuesta crticos.
Microsoft Access es "similar" a otros motores de base de datos SGBDR de escritorio como SQLite, Paradox (de
Borland), DBASE, FoxPro, etc.
A continuacin os mostramos las extensiones tpicas de los archivos que componen una base de datos Access:

.mdb: base de datos de Access (versin 2003 y anteriores).

.mde: base de datos de Access protegida ("compilada") (versin 2003 y anteriores).

.mdz: extensin de plantillas de Access.

.accdb: base de datos de Access (versin 2007).

.accde: base de datos de Access protegida ("compilada") (versin 2007).

.ldb, .laccdb: son usados para determinar qu registros estn bloqueados y por quien, en una base de
datos compartida. Es un archivo temporal, se destruye automticamente cuando no hay usuarios
conectados a la base de datos Access.

.accdc: es un archivo comprimido que contiene un archivo de Access (.accdb o .accde) y un certificado
digital.

.mam: macro de Access.

.maq: consulta de Access.

.mar: informe de Access.

.mat: tabla de Access.

.maf: formulario de Access.

.adp: proyecto de Access.

.adn: plantilla de proyecto de Access.

Definicin Microsoft Word


Microsoft Word es un procesador de textos. Desarrollado por la empresa Microsoft. Actualmente viene integrado en
la suite ofimtica Microsoft Office.
Microsoft Word utiliza un formato nativo cerrado habitualmente llamado DOC (extensin de archivo .doc). Por la
amplsima difusin del Microsoft Word, este formato se ha convertido en estndar de facto con el que pueden
transferirse textos con formato o sin formato, o hasta imgenes, siendo preferido por muchos usuarios antes que
otras opciones como el texto plano para el texto sin formato, o JPG para grficos; sin embargo, este formato
posee la desventaja de tener un mayor tamao comparado con algunos otros. Por otro lado, la Organizacin
Internacional para la Estandarizacin ha elegido el formato OpenDocument como estndar para el intercambio de
texto con formato, lo cual ha supuesto una desventaja para el formato .doc. Ahora, en el Word 2007, se maneja

un nuevo formato, docx. Es ms avanzado y comprime an ms el documento.

Escenario de trabajo, fichero Word


Supongamos el caso en el que queremos insertar en un documento de Word una lista de todos los clientes de
nuestro programa de Facturacin (con base de datos Microsoft Access). Estamos realizando un informe en Word en
el que hemos de incluir una tabla con todos los clientes y su correspondiente DNI. Lgicamente, si no disponemos
de este mtodo, tendremos que insertarlos manualmente.
Por ejemplo, supongamos que disponemos de este documento de Word:

Y en la parte final queremos incluir dicha lista de clientes.


Para realizar este proceso automtico necesitaremos dos cosas:

1.

La base de datos Access (aunque el procedimiento que explicamos aqu es vlido para cualquier otro
motor de base de datos).

2.

El mdulo con el macro que realizar la conexin a la base de datos Access, obtendr los clientes (en
nuestro ejemplo) y crear una tabla en Word con dos columnas, en una insertar el nombre de cada
cliente y en la otra el DNI correspondiente.

Creacin de la base de datos Microsoft


Access 97 (mdb)
Abriremos Access o bien accederemos a la carpeta donde queramos crear la base de datos access y pulsaremos
con el botn derecho del ratn, seleccionando "Nuevo" - "Base de datos de Microsoft Access":

Introduciremos el nombre del fichero mdb de la base de datos, por ejemplo "bdajpdsoft", pulsaremos en "Crear":

En la ventana de Base de datos, en la pestaa "Tablas", pulsaremos "Nuevo":

En la ventana de Nueva tabla seleccionaremos "Vista Diseo":

Aadiremos los campos que queramos para la tabla, por ejemplo:

codigo: de tipo Autonumrico.

nombre: de tipo Texto con 100 caracteres.

dni: de tipo Texto con 25 caractes.

Estableceremos una clave principal (primary key o clave primaria) para la tabla, pulsando con el botn derecho del
ratn sobre el campo "codigo" y seleccionando "Clave principal":

Cerraremos la ventana anterior, nos pedir si queremos guardar los cambios, pulsaremos "S":

Introduciremos el nombre de la tabla, por ejemplo "clientes":

Ya tendremos creada la tabla, ahora podremos aadirle datos pulsando en "Abrir":

En la lista podremos aadir, eliminar y modificar registros:

Creacin del mdulo VBA en Word 97 con


el cdigo para acceso a Access
Desde el documento de Word que queramos utilizar como "plantilla" pulsaremos en el men "Herramientas" "Macro" - "Macros...":

Introduciremos en "Nombre de la macro" el nombre que tendr la macro para diferenciarla de otras, por ejemplo
"obtencionDatosMDB", pulsaremos "Crear":

Pegaremos el cdigo fuente de abajo en la ventana de la macro:

El cdigo fuente VBA del macro para realizar al conexin con microsoft Access, obtener los datos de los clientes y
crear la tabla en Word con la lista de clientes:

Dim db As Database
Dim rsDatos As Recordset
Sub obtencionDatosMDB()
Dim sql As String
Dim resultadoMsg
On Error GoTo cError
resultadoMsg = MsgBox("Se va a realizar la conexin con la " & _
"base de datos para obtener los datos a partir " & _
"del punto actual del documento Word desea " & _
"continuar?", vbQuestion + vbOKCancel, "Acceso a mdb desde Word")
If resultadoMsg = vbOK Then

'Accedemos a Access (mdb) desde Word


Set db = opendatabase("C:bdajpdsoft.mdb")
sql = "SELECT nombre, dni FROM clientes"
sql = sql & " WHERE nombre is not null"
sql = sql & " ORDER by nombre"
Set rsDatos = db.OpenRecordset(sql, dbOpenSnapshot)
'Insertar una lnea en blanco en el documento
Selection.MoveDown Unit:=wdLine, Count:=1
Selection.TypeParagraph
Selection.TypeParagraph
'Tipo de letra para el ttulo
Selection.Font.Size = 12
Selection.Font.Bold = True
Selection.TypeText Text:="CLIENTES"
Selection.TypeParagraph
Selection.Font.Size = 11
'Insertamos una tabla con dos columnas
ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=1,
NumColumns:=2
Selection.Tables(1).Columns(1).SetWidth ColumnWidth:=300,
RulerStyle:=wdAdjustNone
Selection.Tables(1).Columns(2).SetWidth ColumnWidth:=100,
RulerStyle:=wdAdjustNone
Selection.Tables(1).Rows.Alignment = wdAlignRowCenter
'Texto de la cabecera de la tabla
sValor = "Nombre"
Selection.TypeText Text:=sValor
Selection.MoveRight Unit:=wdCell
sValor = "DNI/CIF"
Selection.TypeText Text:=sValor
Selection.MoveRight Unit:=wdCell
'Sombreamos la primera fila (encabezado)
Selection.Tables(1).Rows(1).Select
Selection.Cells.Shading.Texture = wdTexture20Percent
Selection.Font.Size = 10
Selection.Font.Bold = True
Selection.EndKey Unit:=wdLine
Selection.MoveRight Unit:=wdCell
'Recorremos la tabla de clientes
Do While (Not rsDatos.EOF)
Selection.Font.Size = 9
Selection.Font.Bold = False
'Insertamos el nombre del cliente en la tabla
sValor = "" & rsDatos("nombre")
Selection.TypeText Text:=sValor

'Movemos a la siguiente columna


Selection.MoveRight Unit:=wdCell
Selection.Font.Size = 9
Selection.Font.Bold = False
'Insertamos el DNI del cliente en la segunda columna
sValor = "" & rsDatos("dni")
Selection.TypeText Text:=sValor
Selection.MoveRight Unit:=wdCell
rsDatos.MoveNext
Loop
rsDatos.Close
End If
cSalir:
Exit Sub
cError:
MsgBox Err.Description, vbExclamation + vbOKOnly
GoTo cSalir
End Sub
Aadiremos la referencia a Microsoft DAO 3.6 Object Library desde el men "Herramientas" - "Referencias..." del
editor de Visual Basic de Word:

Marcaremos "Microsoft DAO 3.6 Object Library" y pulsaremos "Aceptar":

Ejecucin de la macro en Word para


acceso a base de datos Access
Una vez creada la macro en Word que accede a una base de datos Microsoft Access, obtiene los clientes de una
tabla y aade una tabla de Word con los datos obtenidos de la mdb, podremos ejecutarla en el documento de
Word.
Para ejecutar la macro nos posicionaremos (con el cursor) en la parte del documento donde queramos insertar la
tabla con los datos de Access y pulsaremos en el men "Herramientas" - "Macro" - "Macros...":

Seleccionaremos la macro creada, en nuestro caso "obtencionDatosMDB" y pulsaremos "Ejecutar":

Puesto que en el cdigo VBA hemos aadido un aviso, nos lo mostrar antes de ejecutar la macro:

Y la macro acceder a la base de datos Access (mdb) indicada en el cdigo VBA, obtendr los clientes y su DNI de

la tabla "clientes" y crear una tabla en Word con los datos obtenidos:

Como se puede observar es una alternativa a utilizar la combinacin de correspondencia de Word que, a veces,
puede ser un poco laboriosa. La ventaja de utilizar este mtodo es que podremos personalizar cualquier cosa,
desde las columnas a mostrar hasta los filtros a realizar en la consulta que obtiene los datos de Access (mediante
la clusula where en el SQL).

Artculos relacionados

Cmo compilar un fichero Access (de MDB a MDE).

Consultas e informes desde Microsoft Access a Excel.

Artculos del Proyecto AjpdSoft sobre Microsoft Access.

Exportar una tabla Microsoft Access a MySQL.

Cmo acceder a una BBDD MS Access con Delphi sin utilizar cdigo fuente.

Instalar y realizar aplicacin web con Oracle Application Express.

Instalacin y configuracin de Windows XP Service Pack 3.

AjpdSoft Administracin Bases de Datos (ejemplo de acceso con Delphi a Access mediante ODBC, Open
Source).

AjpdSoft Control aula libre acceso (ejemplo de acceso nativo con Delphi a Access, Open Source).

AjpdSoft Inventario PCs (ejemplo de acceso nativo con Delphi a Access, Open Source).

AjpdSoft Mostrar Clave Access 97.

AjpdSoft Usuarios Conectados a MDB.

Realizar aplicacin en Delphi con tablas Paradox en Red.

Cmo conectar Oracle Database con Access mediante Oracle Transparent Gateway.

Foros del Proyecto AjpdSoft sobre Microsoft Access con trucos y dudas resueltas.

Definicin ODBC.

Definicin SQL.

Crditos
Artculo realizado ntegramente por Alonsojpd miembro fundador del proyecto AjpdSoft.