** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Añadir objeto OLE a fichero Word
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoAñadir objeto OLE a fichero Word

 Responder Responder Página  12>
Autor
Mensaje
Nomada Ver desplegable
Colaborador
Colaborador


Unido: 03/Julio/2011
Localización: España
Estado: Sin conexión
Puntos: 1759
Enlace directo a este mensaje Tema: Añadir objeto OLE a fichero Word
    Enviado: 10/Marzo/2020 a las 12:23
Buenas
Buscando en el foro he encontrado este post para pasar un registro a Word:
http://www.mvp-access.com/foro/boton-para-pasar-registro-de-formulario-a-word_topic83784.html
Hasta aquí todo correcto. Pero yo tengo un campo de tipo Objeto OLE el cual deseo añadir al documento de Word.
Cómo debería hacerlo?
Gracias.
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: 11/Marzo/2020 a las 07:08
Buenas:

Yo tengo un formulario que enlaza con un documento de word, le inserto una imagen (no se si es lo que quieres.

lo que hago en este caso, creo en la plantilla un cuadro de texto y lo inserto en el.

     miWord.ActiveDocument.Shapes("imagen").Select
     miWord.Selection.Range.Select
     miWord.Selection.InlineShapes.AddPicture FileName:=imagen1, linktofile:=False,    savewithdocument:=True

Donde imagen es el cuadro de texto e imagen1 la imagen a insertar.

Espero que sea lo e buscas
Recordar de que soy nuevo y estoy aprendiendo.
Arriba
Nomada Ver desplegable
Colaborador
Colaborador


Unido: 03/Julio/2011
Localización: España
Estado: Sin conexión
Puntos: 1759
Enlace directo a este mensaje Enviado: 11/Marzo/2020 a las 19:52
Gracias.
Voy a probarlo. Lo que quiero es que el documento de Word, tome el valor de un campo tipo Objeto OLE, es decir que cada registro puede tener una imagen distinta.
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: 11/Marzo/2020 a las 20:35
en mi caso, la aplicacion crea presupuestos con la imagen del producto:



  Dim vNom As String, vloc As String
        Dim vprov As String, vdir As String
        Dim miWord As New Word.Application
        Dim miPlantilla As String
        Dim miCarta As String
        Dim rutaCartas As String
        Dim rutabd As String
        Dim rutadoc As String
    'Guardamos el registro de trabajo
        If Me.Dirty Then Me.Dirty = False
    'mimodelo = producto
   
   
 
    'comprobamos si existen carpetas
        Dim vplantilla As String, vrutaarchivo As String, vdoc As String, vbd As String, vsituacion As String
        Dim micarpeta As String
        Dim miruta As String
        Dim cuenta
        Dim vreferencia As String, vidprop As String
        vplantilla = Application.CurrentProject.Path & "\plantillas"
crear:
    'Creamos la ruta de la plantilla
       
        vdoc = "presupuesto.dotx"
        miPlantilla = vplantilla & "\" & vdoc
    'Creamos la ruta donde guardar la carta
        rutadoc = Application.CurrentProject.Path & "\presupuestos"
        vrutaarchivo = "\" & Year(Now) & "\prueba_" & Format(Time, "hh-mm-ss") & ".docx"
        rutadoc = rutadoc & vrutaarchivo
    'Creamos una instancia de Word
     

   
      'miWord.Visible = True

 
    '********************************************** DATOS ****************************************************
   
   
    vNom = "pepe perez" 'InputBox("Nombre cliente:")
    vdir = "rue del percebe" 'InputBox("Direccion Cliente")
    vloc = "Santander" 'InputBox("Localidad cliente")
    vprov = "Cantabria" 'InputBox("Provincia cliente")
    vmod = "Presupuesto de " & mimodelo
    vmod1 = mimodelo
    vpvp = DSum("pvp", "tbl_temporal_acc", "id > 1")
    vcopias = Nz(DLookup("[Velocidad de impresión]", "datos_catalogo", "Modelo = '" & mimodelo & "'"), "")
   
    '*********************************sacar velocidad
recortacopias:
   
    a = Len(vcopias)
    b = InStr(1, vcopias, ";")
    c = InStr(1, vcopias, mimodelo1)
    If b > c Then
    vcopias = Mid(vcopias, 1, b - 1)
    Else
    vcopias = Right(vcopias, a - b)
    GoTo recortacopias
    End If
   
    vfunciones = Nz(DLookup("[funciones principales]", "datos_catalogo", "[Modelo] = '" & mimodelo & "'"), "")
    vtipoequipo = Nz(DLookup("[tipo de equipo]", "datos_catalogo", "Modelo = '" & mimodelo & "'"), "")
    vformatopapel = Nz(DLookup("[tamaños de papel]", "datos_catalogo", "Modelo = '" & mimodelo & "'"), "")
    vtipoalimentador = Nz(DLookup("[tipo de estándar]", "datos_catalogo", "Modelo = '" & mimodelo & "'"), "")
    'vdoblecara = Nz(DLookup("[Unidad de doble cara]", "datos_catalogo", "Modelo = '" & mimodelo & "'"), "Si")
    vcinterface = Nz(DLookup("[conexión de interfaz]", "datos_catalogo", "Modelo = '" & mimodelo & "'"), "Si")
    vimpmovil = Nz(DLookup("[Impresión desde móviles y nube]", "datos_catalogo", "Modelo = '" & mimodelo & "'"), "Si")
    vtpapel = Nz(DLookup("[Tamaños de papel]", "datos_catalogo", "Modelo = '" & mimodelo & "'"), "Si")
    vgpapel = Nz(DLookup("[Gramajes de papel]", "datos_catalogo", "Modelo = '" & mimodelo & "'"), "Si")
    '********************************************** Rellena plantilla**************************************************
    Dim imagen1 As String
 
    Set db = Nothing
  
    imagen1 = Application.CurrentProject.Path & "\imagenes\" & mimodelo & ".jpg"
     'Rellenamos los marcadores del Word con la información
        Set miWord = CreateObject("Word.Application")
            miWord.Documents.Add miPlantilla
             miWord.Visible = True
          If Me.Imagen.Picture <> "" Or Not IsNull(Me.Imagen.Picture) Then
            miWord.ActiveDocument.Shapes("imagen").Select
            miWord.Selection.Range.Select
            miWord.Selection.InlineShapes.AddPicture FileName:=imagen1, linktofile:=False, savewithdocument:=True
        End If
        With miWord.ActiveDocument.Bookmarks
            '.Item("imagen").Range.Text = imagen1
            .Item("nombre1").Range.Text = vNom & " "
            .Item("nombre2").Range.Text = vNom & " "
            .Item("direccion1").Range.Text = " " & vdir & " "
            .Item("direccion2").Range.Text = " " & vdir & " "
            .Item("ciudad1").Range.Text = " " & vloc & " "
            .Item("ciudad2").Range.Text = " " & vloc & " "
            .Item("provincia1").Range.Text = " " & vprov & " "
            .Item("provincia2").Range.Text = " " & vprov & " "
            .Item("velocidad").Range.Text = " " & vcopias & " "
            .Item("vfunciones").Range.Text = " " & vfunciones & " "
            .Item("vdoblecara").Range.Text = " " & vdoblecara & " "
            .Item("vtipoalimentador").Range.Text = " " & vtipoalimentador & " "
            .Item("vcinterface").Range.Text = " " & vcinterface & " "
            .Item("vimpmovil").Range.Text = " " & vimpmovil & " "
            .Item("vtpapel").Range.Text = " " & vtpapel & " "
            .Item("vgpapel").Range.Text = " " & vgpapel & " "
            .Item("modelo").Range.Text = vmod
            .Item("modelo0").Range.Text = vmod1
            .Item("modelo1").Range.Text = vmod1
            .Item("modelo2").Range.Text = vmod1
            .Item("precio").Range.Text = vpvp
       End With
fin:
    'Creamos el archivo final
    miCarta = rutadoc
    miWord.ActiveDocument.SaveAs FileName:=miCarta, FileFormat:=wdFormatDocumentDefault
    miWord.Quit
    Set miWord = Nothing
  'Lanzamos un mensaje de aviso
    MsgBox "El presupuesto se ha generado correctamente", vbInformation, "OK"
    Set miWord = CreateObject("Word.Application")
    miWord.Documents.Open ("" & miCarta & "")
    miWord.Visible = True



espero que te sirva, mucho de lo aqui expuesto ha salido de este foro


Editado por 01loko - 11/Marzo/2020 a las 20:36
Recordar de que soy nuevo y estoy aprendiendo.
Arriba
Nomada Ver desplegable
Colaborador
Colaborador


Unido: 03/Julio/2011
Localización: España
Estado: Sin conexión
Puntos: 1759
Enlace directo a este mensaje Enviado: 12/Marzo/2020 a las 11:25
Muchas gracias.
Yo tambien tengo poca idea. Voy a estudiar el codigo que me envias, y ya te contare.
Arriba
prga Ver desplegable
Moderador
Moderador


Unido: 16/Noviembre/2004
Localización: España
Estado: Sin conexión
Puntos: 3535
Enlace directo a este mensaje Enviado: 12/Marzo/2020 a las 21:07
Hola.
Un ejemplo de trabajo para  pasar algunos objetos ole de un formulario a word es:

Private Sub Comando4_Click()
Dim miword As Object 'Word.Application
Dim mitabla As Object
Dim midoc As Object
Dim nn As Long
Set miword = CreateObject("word.application")
miword.Visible = True
Set midoc = miword.documents.Add
Set mitabla = midoc.Tables.Add(Range:=miword.Application.Selection.Range, NumRows:=3, NumColumns:=2)
mitabla.Rows.HeightRule = 1 'wdRowHeightAtLeast
mitabla.Rows.Height = miword.Application.CentimetersToPoints(6)
mitabla.AutoFitBehavior (0) '(wdAutoFitFixed)

Me.Recordset.MoveFirst
For nn = 1 To 3
  Me.micampoole.Action = acOLECopy
  mitabla.Cell(nn, 1).Select
  miword.Application.Selection.PasteAndFormat (0)  '0 wdpastedefault'''16'wdFormatOriginalFormatting)
  Me.Recordset.MoveNext
Next
End Sub

se supone que micampoole es el objeto ole que está en el formulario y que hay un botón llamado comando4 que pone en marcha el código.
Este código de ejemplo, abre word, crea un documento, inserta una tabla (3 filas 2 columnas) e inserta el objeto ole de los  3 primeros registros del formulario en las celdas de la primera columna de la tabla ( sitio seleccionado del documento word).
Espero que aporte ideas para solucionar el problema
Ya comentas.
Un saludo a todos

Arriba
Nomada Ver desplegable
Colaborador
Colaborador


Unido: 03/Julio/2011
Localización: España
Estado: Sin conexión
Puntos: 1759
Enlace directo a este mensaje Enviado: 13/Marzo/2020 a las 14:28
Muchas gracia a los dos.
Veamos 01loko, vamos por pasos.
He creado en mi plantilla un cuadro de texto. Ahora, tu dices: "Donde imagen es el cuadro de texto...". De qué forma le doy nombre al cuadro de texto?.
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: 13/Marzo/2020 a las 15:41
Recordar de que soy nuevo y estoy aprendiendo.
Arriba
Nomada Ver desplegable
Colaborador
Colaborador


Unido: 03/Julio/2011
Localización: España
Estado: Sin conexión
Puntos: 1759
Enlace directo a este mensaje Enviado: 13/Marzo/2020 a las 18:03
Perdona 01loko, pero en Word en la pestaña "Programador" no veo el grupo "Diseño de la forma". Creo que estamos hablando de diferentes aplicaciones, por eso te preguntaba cuando dices:

"Yo tengo un formulario que enlaza con un documento de word, le inserto una imagen (no se si es lo que quieres.
lo que hago en este caso, creo en la plantilla un cuadro de texto y lo inserto en el.

Donde imagen es el cuadro de texto e imagen1 la imagen a insertar."

- La plantilla de la que hablas es de Word (dotx)?
- El cuadro de texto que insertas lo haces mediante la pestaña "Insertar\Texto\Cuadro de texto" en Word?
- y ahora, como le ponemos nombre al cuadro de texto?

Gracias

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: 13/Marzo/2020 a las 20:06
La plantilla de la que hablas es de word: si
es un documento dotx: si
el cuadro que insertas ko haces mediante insertar .... en Word : si

una vez insertado y SELECCIONADO el cuadro, vamos a desarrollador y  mas o menos debajo de correspondencia aparece propiedades, pinchamos y sale un dialogo domde puedes poner el nombre del cuadro

Saludos
Recordar de que soy nuevo y estoy aprendiendo.
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: 13/Marzo/2020 a las 20:49

Mira si es lo que quieres

Otra forma de saber el nombre del cuadro de texto es una vez seleccionado--- formato--- panel de seleccion

Ahi veras el nombre del cuadro de texto y tambien lo puedes modificar


Saludos


Editado por 01loko - 13/Marzo/2020 a las 21:19
Recordar de que soy nuevo y estoy aprendiendo.
Arriba
Nomada Ver desplegable
Colaborador
Colaborador


Unido: 03/Julio/2011
Localización: España
Estado: Sin conexión
Puntos: 1759
Enlace directo a este mensaje Enviado: 14/Marzo/2020 a las 16:07
Buenos dias y gracias de nuevo.
Ya conseguí crear el cuadro de texto, lo he dejado con el mismo nombre "imagen"

Mi código es el siguiente:

Private Sub cmdWORD_Click()
    Dim miWord As New Word.Application
    Dim miPlantilla As String
    miPlantilla = "D:\TALLER\Productos.dotx"

    Set miWord = CreateObject("Word.Application")
    miWord.Documents.Add miPlantilla
    miWord.Visible = True

    'Declaramos las variables para rellenar el documento de Word
    Dim vDia, vMes, vAño As String

    vDiaComp = Day(Me.vHechoEn)
    vMesComp = UCase(MonthName(Month(Me.vHechoEn)))
    vAñoComp = Year(Me.vHechoEn)

    With miWord.ActiveDocument.Bookmarks
        .Item("WtxtIDPieza").Range.Text = [P_IDPieza]
        .Item("WtxtRefPieza").Range.Text = [P_RefPieza]
        .Item("WtxtNomPieza").Range.Text = [P_NomPieza]
        .Item("WtxtvDiaComp").Range.Text = vDiaComp
        .Item("WtxtvMesComp").Range.Text = vMesComp
        .Item("WtxtvAñoComp").Range.Text = vAñoComp
        ............
    End With
End Sub

Viendo tu código, creo que las líneas que debo añadir son:
           
miWord.ActiveDocument.Shapes("imagen").Select
miWord.Selection.Range.Select
miWord.Selection.InlineShapes.AddPicture FileName:=Imagen1, linktofile:=False, savewithdocument:=True

Pero tu en estas líneas haces referencia a un fichero (Imagen1), el cual yo no utilizo.
Con todo esto, y teniendo en cuenta que el campo de la tabla que tiene la imagen se llama CampOLE, y el nombre del cuadro de texto de Word se llama "imagen", de que manera encajo el código?

Saludos.
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: 14/Marzo/2020 a las 16:40
supongo, que campole se alimenta de una ruta/campo de imagen.

en ese caso si es incrustado:
miWord.Selection.InlineShapes.AddPicture FileName:=campole, linktofile:=False, savewithdocument:=True

en caso de que sea vinculado:
imagen1="ruta de la imagen\nombredelaimagen"
miWord.Selection.InlineShapes.AddPicture FileName:=Imagen1, linktofile:=False, savewithdocument:=True


en mi caso siempre intento que sean vinculados, por no engordar la base.

si te fijas en el ejemplo que te subi, asi es como esta

Recordar de que soy nuevo y estoy aprendiendo.
Arriba
Nomada Ver desplegable
Colaborador
Colaborador


Unido: 03/Julio/2011
Localización: España
Estado: Sin conexión
Puntos: 1759
Enlace directo a este mensaje Enviado: 14/Marzo/2020 a las 16:59
En mi caso la imagen está en la misma tabla, pues lo que deseo es crear cuando desee un documento en Word por cada pieza que tengo junto con su imagen.
Con esto, he cambiado la siguiente línea de código, dejándola así:

miWord.Selection.InlineShapes.AddPicture FileName:=miPlantilla, linktofile:=False, savewithdocument:=True

En principio Access no me da error, lo único, que no sé porqué no aparece la imagen en el cuadro de texto de Word, que además como en tu caso, dentro tiene un marcador con el mismo nombre. Dentro del cuadro de texto me dice: "No se puede mostrar la imagen en este momento."
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: 14/Marzo/2020 a las 23:47
Presupongo que tienes un campo ole en el formulario, si es asi y recogiendo lo que ha escrito prga en su post, me ha quedado asi:         
Me.OLEDependiente603.Action = acOLECopy
            miWord.ActiveDocument.Shapes("imagen").Select
            miWord.Selection.Range.Select
            miWord.Application.Selection.PasteAndFormat (0)


Mira si es lo que buscabas
Recordar de que soy nuevo y estoy aprendiendo.
Arriba
 Responder Responder Página  12>
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable