Copia una imagen inserta en una hoja de excel y centrarla en una celda determinada

Tengo una imagen inserta en una hoja llamada TITULOS y teniendo una celda "A1" (de un tamaño superior) en otras hojas (ELECTRICO, MECANICO), quiero realizar un copia pega y centrado de esta imagen a dicha celda en estas dos hojas...

Aceptais este reto

1 respuesta

Respuesta
1

Te anexo la macro para copiar la imagen. Cambia en la macro "1 Imagen", por el nombre de tu imagen, para que conozcas el nombre de tu imagen que tienes en la hoja "TITULOS", simplemente selecciona la imagen y en el cuadro de nombres aparece el nombre, ejemplo:


Ya que tienes el nombre reemplaza en la macro en estas 2 líneas "1 Imagen", por el nombre de tu imagen

anc1 = h1.Shapes("1 Imagen").Width
alt1 = h1.Shapes("1 Imagen").Height



Sub CopiarImagen()
'Por.Dante Amor
    Application.ScreenUpdating = False
    Set h1 = Sheets("TITULOS")
    anc1 = h1.Shapes("1 Imagen").Width
    alt1 = h1.Shapes("1 Imagen").Height
    '
    hojas = Array("ELECTRICO", "MECANICO")
    For h = LBound(hojas) To UBound(hojas)
        Set h2 = Sheets(hojas(h))
        anc2 = h2.[A1].Width
        alt2 = h2.[A1].Height
        top2 = h2.[A1].Top
        lef2 = h2.[A1].Left
        '
        If anc2 > anc1 Then
            difanc = (anc2 - anc1) / 2
        Else
            difanc = 0
        End If
        If alt2 > alt1 Then
            difalt = (alt2 - alt1) / 2
        Else
            difalt = 0
        End If
        '
        h1.Shapes("1 Imagen").Copy
        h2.Select
        ActiveSheet.Paste
        Selection.Top = top2 + difalt
        Selection.Left = lef2 + difanc
    Next
    MsgBox "Copia Imagen Terminada", vbInformation
End Sub

Sigue las Instrucciones para un botón y ejecutar la macro

  1. Abre tu libro de Excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. En el menú elige Insertar / Módulo
  4. En el panel del lado derecho copia la macro
  5. Ahora para crear un botón, puedes hacer lo siguiente:
  6. Inserta una imagen en tu libro, elige del menú Insertar / Imagen / Autoformas
  7. Elige una imagen y con el Mouse, dentro de tu hoja, presiona click y arrastra el Mouse para hacer grande la imagen.
  8. Una vez que insertaste la imagen en tu hoja, dale click derecho dentro de la imagen y selecciona: Tamaño y Propiedades. En la ventana que se abre selecciona la pestaña: Propiedades. Desmarca la opción “Imprimir Objeto”. Presiona “Cerrar”
  9. Vuelve a presionar click derecho dentro de la imagen y ahora selecciona: Asignar macro. Selecciona: CopiarImagen
  10. Aceptar.
  11. Para ejecutarla dale click a la imagen.

Saludos. Dante Amor

Este código me genera un error, igual me he explicado mal, la imagen la he llamado LOGO, esta en l a hoja TITULOS y quiero que la coloque en la celda A1, solo a las hojas que empiezan por "REPUESTOS" y les voy dando formato con el siguiente código...aquí es donde me interesaría que realizase el copiado y pegado por cada hoja ("REPUESTOS" de la imagen LOGO en las celdas "A1"

For Each HOJA In Sheets
 If Left(HOJA.Name, 9) = "REPUESTOS" Then
Debug.Print HOJA.Name
HOJA.Select
'damos la medida a las 3 primeras columnas
Cells(1, 1).EntireRow.RowHeight = 36 'altura fila1
Cells(1, 1).EntireColumn.ColumnWidth = 13 'ancho columna1
Cells(1, 2).EntireColumn.ColumnWidth = 68 'ancho columna2
Cells(1, 3).EntireColumn.ColumnWidth = 40 'ancho columna3

'aquí interesaría meter la instrucción del pegado de LOGO

Next HOJA
End Sub

Gracias por vuestro asesoramiento...gracias no...muchísimas gracias

Saludos

Ahora ya no entendí qué es lo que necesitas.

Envíame tu archivo y con colores y comentarios me explicas paso a paso qué quieres que haga la macro.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario "valdokken" y el título de esta pregunta.

Te anexo la macro para que busque la palabra "REPUESTOS" en cada hoja, si encuentra varias, a cada una en la columna A, le va a pegar la imagen, así para todas las hojas.

Sub CopiarImagen()
'Por.Dante Amor
    Application.ScreenUpdating = False
    Set h1 = Sheets("TITULOS")
    anc1 = h1.Shapes("FAURECIA").Width
    alt1 = h1.Shapes("FAURECIA").Height
    '
    For Each h2 In Sheets
        If h2.Name <> "TITULOS" Then
            Set r = h2.Columns("B")
            Set b = r.Find("REPUESTOS", lookat:=xlPart)
            If Not b Is Nothing Then
                ncell = b.Address
                Do
                    With h2.Range("A" & b.Row)
                        anc2 = .Width
                        alt2 = .Height
                        top2 = .Top
                        lef2 = .Left
                    End With
                    '
                    difanc = 0
                    difalt = 0
                    If anc2 > anc1 Then difanc = (anc2 - anc1) / 2
                    If alt2 > alt1 Then difalt = (alt2 - alt1) / 2
                    '
                    h1.Shapes("FAURECIA").Copy
                    h2.Select
                    ActiveSheet.Paste
                    Selection.Top = top2 + difalt
                    Selection.Left = lef2 + difanc
                    Set b = r.FindNext(b)
                Loop While Not b Is Nothing And b.Address <> ncell
            End If
        End If
    Next
    MsgBox "Copia Imagen Terminada", vbInformation
End Sub

El problema con la macro, o más bien, con esta lógica, es que si encuentra la palabra "REPUESTOS" en la descripción , también le va a poner la imagen.

Lo que te recomiendo para, no hacer una macro tan compleja, como la que te estoy enviando, lo más simple es, cuando copies la fila con el formato, copia la fila entera, de esa forma también se copia la imagen, por ejemplo:

Sub CopiarFormatoConImagen()
'Por.Dante Amor
    Set h1 = Sheets("TITULOS")
    h1.Rows(1).Copy ActiveSheet.Range("A" & ActiveCell.Row)
End Sub

Y así de sencillo, solamente posiciona el cursor en la fila que quieres copiar el formato y ejecuta la macro. La macro copiará toda la fila incluida la imagen.

Saludos. Dante Amor

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas