Utilizamos cookies propias y de terceros. [Más información sobre las cookies].
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Wiki
Proyecto AjpdSoft: Foros

AjpdSoft :: Ver tema - Acceso a base datos access desde Word con macro
Foros de discusión Buscar Perfil FAQ Iniciar sesión
Information Acceso a base datos access desde Word con macro

Publicar nuevo tema Responder al tema
Foros de discusión » Access, base de datos Microsoft Access (mdb)   
Ver tema anterior :: Ver tema siguiente
AutorMensaje
varios
Magnífico usuario


Registrado: Oct 10, 2006
Mensajes: 2092

Asunto: Acceso a base datos access desde Word con macro Responder citando

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?
MensajePublicado:
Mie Mar 10, 2010 12:22 pm
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Re: Acceso a base datos access desde Word con macro Responder citando



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:

http://www.ajpdsoft.com/modules.php?name=News&file=article&sid=452

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
 
    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


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":

MensajePublicado:
Mie Mar 10, 2010 12:28 pm
Top of PageVer perfil de usuario
Mostrar mensajes de anteriores:   
Todas las horas son GMT - 1 Horas
Publicar nuevo tema Responder al tema
Foros de discusión » Access, base de datos Microsoft Access (mdb)  

Cambiar a:  
Key
  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