Imprimir página | Cerrar ventana

Obtener imágenes de un rango de Excel en Word

Impreso de: Foro de Access y VBA
Categoría: Otros de Microsoft: Windows y Office
Nombre del foro: Word
Descripción del foro: Foro de Word
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=86452
Fecha de impresión: 24/Septiembre/2023 a las 06:36


Tema: Obtener imágenes de un rango de Excel en Word
Publicado por: eyner133
Asunto: Obtener imágenes de un rango de Excel en Word
Fecha de publicación: 02/Septiembre/2022 a las 18:09
Buenos días.

Quisiera que me pudieran orientar como hacer lo siguiente:
Tengo una una plantilla de word, en la cual estoy ejecutando una macro para obtener contenido de archivos excel, lo que quisiera saber es como puedo obtener las imágenes de excel, desde una macro en word.

Gracias.



Respuestas:
Publicado por: prga
Fecha de publicación: 07/Septiembre/2022 a las 12:35
Hola.
Sí he entendido bien, este código de word recorre un rango de celdas(rango1) de Excel y pega las imágenes encontradas en ese rango de celdas del excel en una tabla de word con suficientes filas para pegar las imágenes en la primera columna

Public Sub copiaImgRangoExcel()
Dim miexcel As Object ''''Excel.Application
Dim PrimeraFila As Integer
Dim PrimeraColumna As Integer
Dim UltimaFila As Integer
Dim UltimaColumna As Integer
Dim miimagen As Object
Dim tc As Long
Dim tr As Long
Dim nn As Long
Dim mirango As Object '''Excel.Range
Set miexcel = CreateObject("excel.application")
miexcel.Workbooks.Add ActiveDocument.Path & "\excelconrangoimagenes.xlsx"
miexcel.Visible = True

Set mirango = miexcel.Range("rango1")
PrimeraFila = mirango.Cells(1, 1).Row
PrimeraColumna = mirango.Cells(1, 1).Column
UltimaFila = mirango.Cells(mirango.Cells.Rows.Count, 1).Row
UltimaColumna = mirango.Cells(1, mirango.Cells.Columns.Count).Column
On Error Resume Next
For Each miimagen In miexcel.ActiveSheet.Shapes
    tc = miimagen.BottomRightCell.Column
    tr = miimagen.BottomRightCell.Row
    If (tc >= PrimeraColumna And tc <= UltimaColumna) And (tr >= PrimeraFila And tr <= UltimaFila) Then
         If miimagen.Type = 13 Then
             miimagen.Copy
             DoEvents
             '''''''''''''''''pega en word
           nn = nn + 1
           ActiveDocument.Tables(1).Cell(nn, 1).Select
           Selection.PasteAndFormat (wdPasteDefault)
           DoEvents
           '''''''''''''''''''fin pega en word
         End If
    End If

Next
  On Error GoTo 0

miexcel.Quit
Set miexcel = Nothing

End Sub


Este código es a título de ejemplo y habrá que ajustarlo a las necesidades propias etc etc.
Seguro que hay soluciones más sencillas, pero al menos espero que ayude a resolver la duda
Ya comentas
Un saludo a todos



Imprimir página | Cerrar ventana