Asunto: Acceso a base datos access desde Word con macro
Tengo un documento de Word y quiero saber si es posible que pulsando elun botón o ejecutando una macro acceda a una base de datos Access y obtenga en una tabla (en el documento de Word) los datos de la tabla de Access que le indique.
He probado con la combinación de correspondencia, pero me crea un documento por cada cliente (registro de la tabla de Access) y lo que quiero es ponerlos todos en una tabla de Word.
¿Es posible conectar con Access desde Word y obtener datos?
Publicado:
Mie Mar 10, 2010 12:22 pm
alonsojpd Administrador/Moderador
Registrado: Sep 16, 2003 Mensajes: 2687
Asunto: Re: Acceso a base datos access desde Word con macro
Anuncios
varios escribió:
Tengo un documento de Word y quiero saber si es posible que pulsando elun botón o ejecutando una macro acceda a una base de datos Access y obtenga en una tabla (en el documento de Word) los datos de la tabla de Access que le indique.
He probado con la combinación de correspondencia, pero me crea un documento por cada cliente (registro de la tabla de Access) y lo que quiero es ponerlos todos en una tabla de Word.
¿Es posible conectar con Access desde Word y obtener datos?
Sí que es posible creando una macro y, mediante código Visual Basic for Applications (VBA), realizar el acceso, incluso crear la tabla en Word e insertar los datos de la tabla de Access.
En el siguiente enlace tienes un artículo que explica paso a paso cómo realizar este acceso desde Word a Access y cómo crear una tabla en Word. Incluso publicamos el código VBA:
De todas formas, por si no quieres ver el artículo, el código para el acceso desde Word a Access es el siguiente:
Código:
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 conexión 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 línea en blanco en el documento
Selection.MoveDown Unit:=wdLine, Count:=1
Selection.TypeParagraph
Selection.TypeParagraph
'Tipo de letra para el título
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
'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
No olvides añadir la referencia a Microsoft DAO 3.6 Object Library (como se indica en el artículo): desde el menú "Herramientas" - "Referencias..." del editor de Visual Basic de Word y marcando "Microsoft DAO 3.6 Object Library":
Puede publicar nuevos temas en este foro No puede responder a temas en este foro No puede editar sus mensajes en este foro No puede borrar sus mensajes en este foro No puede votar en encuestas en este foro
Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A