|
Responder
|
Página 12> |
| Autor | |
Nomada
Colaborador
Unido: 03/Julio/2011 Localización: España Estado: Sin conexión Puntos: 1759 |
Tema: Añadir objeto OLE a fichero WordEnviado: 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.
|
|
![]() |
|
01loko
Colaborador
Unido: 17/Agosto/2017 Localización: Santander Estado: Sin conexión Puntos: 807 |
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.
|
|
![]() |
|
Nomada
Colaborador
Unido: 03/Julio/2011 Localización: España Estado: Sin conexión Puntos: 1759 |
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.
|
|
![]() |
|
01loko
Colaborador
Unido: 17/Agosto/2017 Localización: Santander Estado: Sin conexión Puntos: 807 |
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 StringDim 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.
|
|
![]() |
|
Nomada
Colaborador
Unido: 03/Julio/2011 Localización: España Estado: Sin conexión Puntos: 1759 |
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. |
|
![]() |
|
prga
Moderador
Unido: 16/Noviembre/2004 Localización: España Estado: Sin conexión Puntos: 3535 |
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 |
|
![]() |
|
Nomada
Colaborador
Unido: 03/Julio/2011 Localización: España Estado: Sin conexión Puntos: 1759 |
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?.
|
|
![]() |
|
01loko
Colaborador
Unido: 17/Agosto/2017 Localización: Santander Estado: Sin conexión Puntos: 807 |
Enviado: 13/Marzo/2020 a las 15:41 |
|
Recordar de que soy nuevo y estoy aprendiendo.
|
|
![]() |
|
Nomada
Colaborador
Unido: 03/Julio/2011 Localización: España Estado: Sin conexión Puntos: 1759 |
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 |
|
![]() |
|
01loko
Colaborador
Unido: 17/Agosto/2017 Localización: Santander Estado: Sin conexión Puntos: 807 |
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.
|
|
![]() |
|
01loko
Colaborador
Unido: 17/Agosto/2017 Localización: Santander Estado: Sin conexión Puntos: 807 |
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.
|
|
![]() |
|
Nomada
Colaborador
Unido: 03/Julio/2011 Localización: España Estado: Sin conexión Puntos: 1759 |
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. |
|
![]() |
|
01loko
Colaborador
Unido: 17/Agosto/2017 Localización: Santander Estado: Sin conexión Puntos: 807 |
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.
|
|
![]() |
|
Nomada
Colaborador
Unido: 03/Julio/2011 Localización: España Estado: Sin conexión Puntos: 1759 |
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."
|
|
![]() |
|
01loko
Colaborador
Unido: 17/Agosto/2017 Localización: Santander Estado: Sin conexión Puntos: 807 |
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").SelectmiWord.Selection.Range.Select miWord.Application.Selection.PasteAndFormat (0) HE MODIFICADO EL EJEMPLO ANTERIOR: https://drive.google.com/open?id=1iH0H0iEF1yEhg4Y0GT0iBCPHKbp7wFi3 Mira si es lo que buscabas
|
|
|
Recordar de que soy nuevo y estoy aprendiendo.
|
|
![]() |
|
Responder
|
Página 12> |
|
Tweet
|
| Ir al foro | Permisos de foro ![]() Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |