Quiero que mediante un botón en un formulario de access, se imprima el registro en el que me encuentre en un archivo de word.

Tengo una base de datos en access y quiero imprimir los datos del registro en el que me encuentre, en un archivo de word que es un contrato, todo ello mediante un botón de comando puesto en un formulario, previo ya hice la combinación del archivo de word con la base de datos.

1 respuesta

Respuesta
1

Si se utiliza la opción de combinar correspondencia, solo se ha de utilizar una consulta (que devuelva los datos a enviar) y aplicarle como condición el ID del registro a enviar (generalmente el actual del formulario activo).

Doy por supuesto que actualmente funciona pero genera tantos contratos (documentos Word) como registros hay en la base de datos.
Si es así, solo ha de cambiarse (en la combinación) el actual origen de datos (la tabla) por la consulta filtrada para obtener solo el contrato (o contratos) deseado/s.

Muchas gracias Enrique, por tu respuesta, solo que encontré código vba que puse en un botón de comando el código es el siguiente:

Private Sub cmdIMPRIMIRCTO_Click()
Dim Form As Word.Document
Dim Word As Word.Application
sDBPath = "C:\Users\Roberto\Desktop\Roma\Base de datos Yucatan 83\BD Yucatan 83.accbd"
    Set Word = CreateObject("Word.Application")
    Set Form = Word.Document.Open("C:\Users\Roberto\Desktop\Roma\Base de datos Yucatan 83\Nva plantilla CPSHY83 PEBD.accbd")
    With Word
        Word.Visible = True
        With .ActiveDocument.MailMerge
            '.MainDocumentType = wdMailingLabels
            .MainDocumentType = wdMailingLetters
            .OpenDataSource Name:=CurrentProject.FullName, ConfirmConversions:=False, _
                ReadOnly:=False, LinkToSource:=False, AddToRecentFiles:=False, _
                PasswordDocument:="", PasswordTemplate:="", WritePasswordDocument:="", _
                WritePasswordTemplate:="", Revert:=False, Format:=wdOpenFormatAuto, _
                SQLStatement:="select * from WORD", _
                SQLStatement1:="", _
                SubType:=wdMergeSubTypeWord2000, OpenExclusive:=False
            .Destination = wdSendToNewDocument
            .Execute
            .MainDocumentType = wdNotAMergeDocument
        End With
    End With
    Form.Close False
    Set Form = Nothing
    Set Word = Nothing
Exit_Error:
    Exit Sub
ErrorHandler:
    Word.Quit (False)
    Set Word = Nothing
End Sub

Solo que al ejecutarlo este me marca "error de compilación: No se ha definido el tipo definido por el usuario", el error lo marca desde la primera línea del código Dim form As Word. Document

Desde ahí, me podrían ayudar a depurar esto, creo que esto cerca de lo que quiero hacer, que es que se imprima el contrato en formato de word y que solo sea el registro que esta activo.

Muchas gracias por su atención.

Para poder instanciar objetos externos a Access, es indispensable activar la referencia adecuada (que depende de la version de Access en uso, no es la misma si se utiliza A'97 que A' 2002 o la del office 365).

Normalmente Access lo hace de forma automática y cuando no lo logra (posible conflicto de versiones) aparece con una marca de error, suele solucionarse borrándola y reiniciando la aplicación para que recupere la versión correcta.

Esto se revisa en la ventana de VBA en el apartado 'Herramientas' y dentro de el 'Referencias', debería haber marcada una que en mi maquina es: 'Microsoft Word 14.0 Object Library' (el numero varia en función de la version de office).

Verifica que en tu maquina esta activa (las activas encabezan el principio de la lista) y si no lo esta habrá que localizarla en ella (las referencias están dispuestas en orden alfabético, primero las activas, seguidas de las que dan error y a continuación las disponibles).

Las referencias que estén con una marca de error, se borran para que Access las localice en cuanto se reinicie de nuevo la aplicación.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas