Conectando un documento Word con una BD Access


En el siguiente ejemplo se asume que tenemos una base de datos Access llamada DataBase.mdb y que está almacenada en la carpeta C:\DataBaseFolder. se asume también que la base de datos contiene una tabla llamada Table_1 y que esa tabla contiene dos campos llamados Field_1 y Field_2. Finalmente se asume que Field_1 es un campo numérico mientras que  Field_2 es un campo de texto.

 
El código revisa el valor en  Field_1. y si este valor no es cero se coloca el texto de Field 2 en el documento activo de Word, en la posición del cursor

En una situación real podría ser necesario tener marcadores en el documento (así como una plantilla que los contenga) en lugar de insertar los ítem en la posición del cursor 

Para que el código funcione se debe establecer una referencia en la plantilla del Word a  Microsoft DAO 3.51 Object Library and Microsoft Datasource Interfaces. Para hacer esto se ingresa a Herramientas, Macros, Editor de Visual Basic y Referencias



Sub GetDataFromDataBase()
'reserva memoria para el objeto database así como para el registro activo
Dim myDataBase As Database
Dim myActiveRecord As Recordset
'abre la Base de datos
Set myDataBase = OpenDatabase("C:\DataBaseFolder\Database.mdb")
'accesa al primer registro de la tabla
Set myActiveRecord = myDataBase.OpenRecordset("Table_1", dbOpenForwardOnly)
'busca a través de todos los registros hasta llegar al  end-of-file

Do While Not myActiveRecord.EOF
            'si el campo #1 contiene un valor distinto de cero
            'inserta el valor del campo #2 en el documento
            'en la posición actual del cursor

            If myActiveRecord.Fields("Field_1") <> 0 Then
                  Selection.InsertAfter myActiveRecord.Fields("Field_2")
            End If
            'accesa el registro siguiente
            myActiveRecord.MoveNext
Loop
'finalmente cierra la base de datos
myActiveRecord.Close
myDataBase.Close
End Sub


Créditos

Este sencillísimo y práctico ejemplo está traducido casi al pie de la letra de un tip dado por Bill Cohan, uno de los mejores expertos en VBA que conozco y que tiene muy buena voluntad para ayudar a los novatos en el newsgroup microsoft.public.word