Imagen automática con macros en excel

Dante amor, en relación con esta macros :

Sub insertarimagen()
'Por.DAM
On Error Resume Next
ruta = ActiveWorkbook.Path & "\"
For i = 1 To Range("A" & Rows.Count).End(xlUp).Row
imagen = Cells(i, "A")
Set img = ActiveSheet.Pictures.Insert(ruta & imagen)
With Cells(i, 2)
Arr = .Top
Izq = .Left
Anc = .Offset(0, 1).Left - .Left
Alt = .Offset(1, 0).Top - .Top
End With
With img
'.Name = numimg
.ShapeRange.LockAspectRatio = msoFalse
.Top = Arr
.Left = Izq
.Width = Anc
.Height = Alt
End With
Set img = Nothing
Next
End Sub

Tengo una carpeta en el disco c con el nombre de imágenes de igual forma tengo ya el archivo guardado en macros en la misma carpeta al llamar en la celda por ejemplo: ¿La imagen "foto.jpg" no lo haces que estaré haciendo mal dante amor? La quiero poner en la celda k41

1 respuesta

Respuesta
2

La macro funciona de la siguiente forma:

Primero, tienes que poner en la columna "A" desde la fila 1, es decir, tienes que empezar en la celda A1, los nombres de los archivos.

En la celda A1 tienes que poner el nombre foto.jpg

La macro te pone la imagen en la celda B1

Si tienes otro nombre en la celda A2, la macro te pone la imagen en la celda B2

Y así sucesivamente.

La relación es, si tienes una imagen en la celda A1 te pone la imagen en la misma fila.


¿Cuántas imágenes quieres poner?

¿Solamente quieres poner una imagen?

Si solamente vas a cargar una imagen y el nombre lo tienes en la celda A1 y la imagen la quieres en la K41, utiliza esta macro:

Sub insertarimagen()
'Por.DAM
    On Error Resume Next
    ruta = ActiveWorkbook.Path & "\"
    imagen = [A1]
    Set img = ActiveSheet.Pictures.Insert(ruta & imagen)
    With [K41]
        Arr = .Top
        Izq = .Left
        Anc = .Width
        Alt = .Height
    End With
    With img
        '.Name = numimg
        .ShapeRange.LockAspectRatio = msoFalse
        .Top = Arr
        .Left = Izq
        .Width = Anc
        .Height = Alt
    End With
    Set img = Nothing
End Sub

Saludos.Dante Amor

Recuerda valorar la respuesta.

Dante buen día de nuevo estoy en excel 2007 y hago todo lo que me dices la macros la pego en thisworkbook este archivo lo guarde en modo macros y lo tengo en una carpeta llamada fotos, en esa carpeta esta el archivo como te decía junto con la foto llamada 1.jpg. al tener el archivo abierto en la celda a1 escribo 1.jpg todo esto con macros activado y no hace nada. ¿Qué podrá ser dante?

La macro no va en thisworkbook. Bórrala de ahí.

La macro va en un módulo y la ejecutas con F5

Si quieres que se ejecute en automático la tienes que poner en los eventos de tu hoja y sería así:

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    If Target.Address <> "$A$1" Then Exit Sub
    On Error Resume Next
    ruta = ActiveWorkbook.Path & "\"
    imagen = [A1]
    Set img = ActiveSheet.Pictures.Insert(ruta & imagen)
    With [K41]
        Arr = .Top
        Izq = .Left
        Anc = .Width
        Alt = .Height
    End With
    With img
        '.Name = numimg
        .ShapeRange.LockAspectRatio = msoFalse
        .Top = Arr
        .Left = Izq
        .Width = Anc
        .Height = Alt
    End With
    Set img = Nothing
End Sub

Sigue las Instrucciones para poner la macro en los eventos de worksheet

  1. Abre tu libro de excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(tu hoja)
  4. Del lado derecho copia la macro

Recuerda valorar la respuesta.

cuando pongo f5 el recuadro aparece vacio

¿Pusiste la macro en un módulo?

La funciona, pero tiene un objetivo.

Mejor explícame qué quieres hacer y te hago una macro de acuerdo a lo que necesitas.

¿Así qué olvida las macros que ya te envié y explícame con detalle qué quieres?

Tengo una carpeta llamada fotos, dentro de esta carpeta tengo fotos con números consecutivos ( 1,2,3,4,5 etc.) y solo quiero que se inserten en la celda k41 así como las voy llamando . llamo la 1, y al llamar la 2 desaparezca la 1 y se inserte la 2 y así sucesivamente o cuando llame el numero que yo necesite, gracias por tu atención dante amor

Entonces pon esta macro en los eventos de tu hoja:

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    If Target.Address <> "$A$1" Then Exit Sub
    On Error Resume Next
    ruta = ActiveWorkbook.Path & "\"
    imagen = [A1]
    ActiveSheet.DrawingObjects("imagen").Select
    Selection.Delete
    Set img = ActiveSheet.Pictures.Insert(ruta & imagen)
    With [K41]
        Arr = .Top
        Izq = .Left
        Anc = .Width
        Alt = .Height
    End With
    With img
        .Name = "imagen"
        .ShapeRange.LockAspectRatio = msoFalse
        .Top = Arr
        .Left = Izq
        .Width = Anc
        .Height = Alt
    End With
    Set img = Nothing
End Sub

Para poner la macro en los eventos de tu hoja:

Sigue las Instrucciones para poner la macro en los eventos de worksheet

  1. Abre tu libro de excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(tu hoja)
  4. Del lado derecho copia la macro

Tienes que escribir en la celda A1 el nombre de tu archivo 1.jpg o 1.jpeg

Cada vez que cambies el nombre en la celda A1 se actualizará la imagen en la celda K41

Saludos. Recuerda valorar la respuesta.

¡Gracias! Dante esta funciona muy bien el único problema es que cuándo voy a cerrar se queda pasmado el archivo pero excelente amigo

¿Podre hacerte otra consulta sobre excel?

Con gusto te sigo apoyando, crea una nueva pregunta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas