Combinar correspondencia Access-Word

Tengo un problema con la combinación de correspondencia de Access con Word, el caso es que he estado bastante tiempo buscando soluciones al respecto y no he dado con la solución todavía.
Explico el tema: En un formulario Access tengo uno de los campos que se llama Nº de cliente, que es único y clave principal de la tabla. Lo que necesito es que al tener en pantalla el formulario con los datos del (ejem. Cliente 234) pulsase un botón del formulario y se me abriese el documento Word con el que tengo combinada la correspondencia, pero no que se abra el documento en el primer registro de la correspondencia, sino que se abra en el registro que corresponda al cliente 234, vinculándolos de alguna forma.

2 Respuestas

Respuesta
1
La solución parece sencilla.
Create una tabla 'codigoClienteActivo' y al pulsar el botón que tiene que abrirte el Word, guarda en ella el cliente del formulario (me.[Nº de cliente]).
Luego creas una consulta 'consultaClienteActivo' entre tu tabla de clientes y la nueva tabla 'codigoClienteActivo' y el documento Word lo relacionas con esta consulta en lugar de hacerlo con la tabla.
Hola, gracias por responder.
¿Podrías explicarme un poco mejor el proceso? No termino de entenderlo.
Gracias.
Supongamos que tienes definida la tabla de clientes con un campo identificativo que es "nCliente". Crearemos la tabla 'clientes_elegidos' con un único campo "nCliente" del mismo tipo que el anterior.
También crearemos una consulta "datos_clientes_elegidos" que unirá las tablas "clientes" y "cliente_elegidos".
Por último, crearemos un documento word y con 'combinar correspondencia' lo relacionaremos con la consulta "datos_clientes_elegidos".
Una vez hecho esto, para presentar el documento "xxxxxxxxxxxxxxxxxxxx" para el cliente "nnnnn" realizaremos la siguiente llamada (esto es lo que tendrías que poner en el botón de tu formulario):
     PresentarDocumentoConDatosCliente "xxxxxxxxxxxxxxxxxxxx","nnnnn"
En un módulo nuevo copia el siguiente código:
Option Compare Database
Option Explicit
Sub presentarDocumentoConDatosCliente(ByVal nomDoc As String, ByVal nCliente As Long)
    Dim rs As Recordset
    Set rs = CurrentDb().OpenRecordset("cliente_elegidos")
    Do While Not rs.EOF
        rs.MoveFirst
        rs.Delete
    Loop
    rs.AddNew
    rs!nCliente = nCliente
    rs.Update
    rs.Close
    abrirDocumentoWord nomDoc
End Sub
Sub abrirDocumentoWord(ByVal nomDoc As String)
    ' NOTA: Hay que incluir una referencia (menú herramientas) a la librería:
    '       - Microsoft Word 11.0 Object Library
    Dim miWord As Word.Application
    On Error Resume Next
    Set miWord = New Word.Application
    miWord.Documents.Open nomDoc
    If Err <> 0 Then
        MsgBox "Error al abrir el documento '" & nomDoc & "'." & _
               vbCrLf & vbCrLf & "El mensaje del sistema es:" & _
               vbCrLf & vbCrLf & Error$ & _
               vbCrLf & vbCrLf & "Apertura del documento cancelada."
        miWord.Quit
        Set miWord = Nothing
        On Error GoTo 0
        Exit Sub
    End If
    On Error GoTo 0
    miWord.Visible = True
    Set miWord = Nothing
    AppActivate "Microsoft Word"
End Sub
Recordatorio, no olvides incluir la referencia a "Microsoft Word 11.0 Object Library" desde el menú de herramientas del módulo.
Respuesta

Por si puede servir a alguien

Yo probé con crear la consulta pero me daba algún problema. Lo he solucionado creando una tabla temporal, y asociando el documento de Word a esa tabla.

El formulario de clientes incluye un botón con una macro que borra los datos de la tabla temporal, copia los del registro activo en el formulario, y abre el Word. Al estar combinado con la tabla temporal muestra sólo los datos de ese registro.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas