none
¿Imprimir Texto Largo (o memo) de Access a Word usando el siguiente código? RRS feed

  • Pregunta

  • Estoy trabajando en un programa con Access que trata de pasar, con un formulario, el registro determinado a una plantilla de word .dotx.

    Encontre el código siguiente por internet, el cual he ido retocando (programado en vba):

    'REFERENCIAS NECESARIAS:
    'Menú -> Herramientas -> Referencias -> Microsoft Word Object Library
    
    Public Function InformeWord( _
      ByVal plantilla_word 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 * FROM " & Consulta & " WHERE " & 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

    Este código recoge el registro en el formulario y lo imprime en las casillas de la plantilla de Word marcadas con "[NOMBRE CAMPO EN ACCESS]" eliminado los carácteres "[" y "]".

    El problema viene cuando intentas pasar texto mas grande de 255 carácteres, es decir, texto largo o también llamado memo. ¿Como deberia editar el código para que pueda transportar el Texto Largo a Word editando el código ya usado?

    Aviso que soy bastante principiante con VBA pero he programado bastante con C con lo que me ayuda a entender ciertas cosas.

    Muchas gracias

    jueves, 17 de octubre de 2019 18:17

Todas las respuestas