** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Enviar datos de access a word
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoEnviar datos de access a word

 Responder Responder
Autor
Mensaje
letoy Ver desplegable
Nuevo
Nuevo


Unido: 15/Noviembre/2008
Localización: España
Estado: Sin conexión
Puntos: 34
Enlace directo a este mensaje Tema: Enviar datos de access a word
    Enviado: 04/Junio/2020 a las 18:54
Hola muy buenas.
Tengo una tabla en access que tiene datos tipo "texto, memo, numéricos, mediante documento adjunto fotografias" es posible pasar todos esos datos a una plantilla word mediante vba?

Tengo ya programado para pasar los campos texto, pero soy incapaz de conseguirlo con los campos restantes. 
Me parece increíble que se pueda hacer una exportación a pdf casi perfecta y a word solo texto enriquecido.  
Alguien me podría indicar si es posible o estoy dando palos de ciego.
Si es posible donde podría sacar información, llevo días ya con esto y no lo consigo.
Un saludo.
Arriba
prga Ver desplegable
Moderador
Moderador


Unido: 16/Noviembre/2004
Localización: España
Estado: Sin conexión
Puntos: 3523
Enlace directo a este mensaje Enviado: 05/Junio/2020 a las 09:38
Hola.
Si puedes, explica un poco como pasas o intentas pasar los datos de access a word.
Ya comentas.
Un saludo a todos
Arriba
letoy Ver desplegable
Nuevo
Nuevo


Unido: 15/Noviembre/2008
Localización: España
Estado: Sin conexión
Puntos: 34
Enlace directo a este mensaje Enviado: 05/Junio/2020 a las 10:01
Hola buenos días.

Os paso el código que funciona perfectamente. 

En el formulario :

Private Sub Informe_Click()

Call InformeWord("Informe_gestion_riesgos.dotm", "CLIENTES", "id_clientes=" & Me.id_clientes)

End Sub


En el módulo: 

Public Function InformeWord( _
  ByVal plantilla_word As String, _
  ByVal consulta As String, _
  Optional ByVal filtro As String = "" _
) As Boolean
On Error GoTo Errores


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


Muchas gracias por vuestro interés

Arriba
prga Ver desplegable
Moderador
Moderador


Unido: 16/Noviembre/2004
Localización: España
Estado: Sin conexión
Puntos: 3523
Enlace directo a este mensaje Enviado: 05/Junio/2020 a las 10:47
Hola.
A primera vista.
El método "Find" , salvo mejor opinión, sólo 'pasa' 255 caracteres, por lo que los campos "memo" si tienen más caracteres los truncará. En este caso se tiene que utilizar un marcador para esos campos. En el foro, hace algún tiempo, ya se trató este tema.
En cuanto a las imágenes el metodo find, nada de nada, y la cosa es más complicada desde un recordset y en un principio, que yo sepa, sólo se pueden pasar, sin recurrir a Apis, si están "visibles' en un formulario.
Ya comentas.
Un saludo a todos

Arriba
01loko Ver desplegable
Colaborador
Colaborador


Unido: 17/Agosto/2017
Localización: Santander
Estado: Sin conexión
Puntos: 807
Enlace directo a este mensaje Enviado: 05/Junio/2020 a las 11:47
Recordar de que soy nuevo y estoy aprendiendo.
Arriba
letoy Ver desplegable
Nuevo
Nuevo


Unido: 15/Noviembre/2008
Localización: España
Estado: Sin conexión
Puntos: 34
Enlace directo a este mensaje Enviado: 06/Junio/2020 a las 13:39
Gracias a los dos
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable