Datos de Access a formulario (macro) en Word.

Tengo un pequeño programita (macro) en Word con visual basic, con el abro una pantalla ingreso un rut y con ese rut me gustaría consultar una base de datos access para devolver ciertos campos de una tabla.
Por ejemplo dato el rut que me devuelva el nombre y teléfono. ¿Me puedes orientar?, es decir, me falta como unir el programita con access.
Gracias
{"lat":-36.3151251474805,"lng":-72.0703125}

1 respuesta

Respuesta
1
Debes vincular la tabla con Herramientas->Cartas y Correspondencia->Combinar correspondencia
Debes montar primero la carta modelo que quieres enviar y deja en blanco los espacios donde quieras poner los campos variables, verás que en la barra de herramientas te aparece otra y si te pones en el primer icono, buscarás el origen de la BD y seleccionas un origen, con el Examinar.
Entonces te vas a la plantilla que has creado y pones el cursor donde quieras poner, por ejemplo el nombre de tu cliente y seleccionas el campo.
Una vez tengas todo montado, veras que en la barra de herramientas nueva, hay una impresora con otra cosa, esa es la impresora que tienes que clicar para que te imprima todas las facturas combinando los campos.
Bueno.
Hola, gracias por responder te pasaste.
Mira eso ya lo había leído en internet y no es lo que necesito ya que yo ya tengo el código en visual (para word) y tengo también el código las distintas opciones según el certificado que la persona quiera generar para que se arme por medio de código el certificado, no es una sola planilla. (Son certificados para un colegio de acuerdo al rut del alumno que ingrese la persona en un combobox) Entonces lo que quiero es por medio de ese rut buscar en access a que alumno corresponde, carrera, si es regular o no etc, y llenar los campos que actualmente llenan de a uno, como carrera, semestre, etc.
Quizás no había sido muy clara.
Gracias!
En VB el código para buscar un registro en concreto es:
DLookup([nombredelcampo],[nombredelatabla], Criterios)
¿Pero cómo se le dice a Word que en tal base de datos debe buscar?
Con lo de combinar correspondencia, en el segundo paso, Examinar
Gracias por la respuesta, pero yo quería algo más directo ya que es para las secretarias para que lo usen como sistema y no tengan que hacer tantos pasos, este es el código y como la función está en el módulo de la base access y no en word entonces no la reconoce.
Al ejecutarlo aparece este error: No se ha definido Sub o Función.
Esto está en Visual Basic de Word en el commandbutton en el evento click:
TextBox1.Text = InformeWord("informe_cliente.dot", "gralu", "gralurut=" & TextBox2.Value)
Esto está en el Módulo en Access:
Public Function InformeWord( _
ByVal informe_cliente As String, _
ByVal consulta As String, _
Optional ByVal filtro As String = "" _
) As Boolean
On Error GoTo Errores
'Ejemplo de uso (evento al hacer clic de un botón de comando):
'=InformeWord("informe_cliente.dot";"tabla_clientes";"cliente_id=" & cliente_id)
Dim rs As DAO.Recordset
Dim campo As DAO.Field
Dim appWord As Word.Application
Dim documento_word As Word.Document
Dim ruta_actual As String
If filtro <> "" Then
    consulta = "SELECT gralunom FROM " & consulta & " WHERE gralurut = " & filtro
End If
Set rs = CurrentDb.OpenRecordset(consulta, dbOpenForwardOnly)
If rs.BOF And rs.EOF Then
'Nada
Else
Set appWord = New Word.Application
appWord.Visible = False
Call SysCmd(acSysCmdInitMeter, "Exportando a Word", 100)
DoCmd.Hourglass True
If plantilla_word = "" Then
   Set documento_word = appWord.Documents.Add()
Else
   ruta_actual = Left(CurrentDb.Name, InStrRev(CurrentDb.Name, "\"))
   Set documento_word = appWord.Documents.Add(ruta_actual & plantilla_word)
End If
For Each campo In rs.Fields
   With appWord.Selection.Find
      .ClearFormatting
      .Text = "[" & UCase(campo.Name) & "]"
      With .Replacement
         .ClearFormatting
         .Text = rs(campo.Name) & ""
      End With
      Call .Execute(Replace:=Word.WdReplace.wdReplaceAll)
   End With
Next
End If
InformeWord = True
Salida:
On Error Resume Next
  appWord.Visible = True
  Call SysCmd(acSysCmdRemoveMeter)
  DoCmd.Hourglass False
  Set appWord = Nothing
  Set documento_word = Nothing
  rs.Close: Set rs = Nothing
  Set campo = Nothing
  Exit Function
Errores:
   MsgBox Err.Description, vbCritical, "InformeWord"
   Resume Salida
End Function
Ya, pero es que desde Word no podrás abrir Access de otra manera.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas