Crear una macro en VBA y Excel que inserte y ordene una cantidad X de imágenes

Que código se puede usar para que la macro al ejecutarse: habrá la ventana para insertar imágenes, y yo pueda seleccionar una cantidad X de imágenes e insertarla y además haga lo siguiente con las imágenes:

  • Ordenar las imágenes una debajo de otra.
  • Redimensionarlas a un ancho específico.
  • Alinearlas al centro de la página.
  • Si se ejecuta la macro nuevamente, las nuevas imágenes se ubiquen debajo de las anteriores.
  • Que se inserten partiendo de una celda definida.

    1 Respuesta

    Respuesta
    1

    Algo así te servirá, solo ajusta cosas como los tamaños y posiciones a tus necesidades:

    Sub InsertarVariasImagenes()
    Dim Inicioarray  As String, Finalarray  As String
    Dim Imagen As Object
    Dim LoopArray As Long
    Dim Arriba As Double, Izquierda As Double, Ancho As Double, Alto As Double
    If Range("A1") = "" Then
    Range("A1") = 1
    End If
    ListadeImagenes = Application.GetOpenFilename(FileFilter:="JPG (*.jpg),*.JPG, PNG(*.png),*.PNG", _
                Title:="Elija una imagen", _
                MultiSelect:=True)
    If IsArray(ListadeImagenes) Then
    Let Inicioarray = LBound(ListadeImagenes)
    Let Finalarray = UBound(ListadeImagenes)
    For LoopArray = Inicioarray To Finalarray
    Set Imagen = Hoja4.Pictures.Insert(ListadeImagenes(LoopArray))
    With Range("F" & Range("A1").Value & ":I" & (Range("A1").Value + 9))
    Arriba = .Top
    Izquierda = .Left
    Ancho = .Offset(0, .Columns.Count).Left - .Left
    Alto = .Offset(.Rows.Count, 0).Top - .Top
    End With
    With Imagen
    .Top = Arriba
    .Left = Izquierda
    .Width = Ancho
    .Height = Alto
    End With
    Range("A1").Value = Range("A1").Value + 10
    Next LoopArray
    End If
    Set Imagen = Nothing
    End Sub

    Comentas

    Abraham Valencia

    ¡Gracias! Funciona de maravilla, me ayudo mucho. Ahora solo tengo que hacer los ajustes como dices.

    Aquí molestando de nuevo, entiendo que el tamaño de la imagen se da en función del tamaño de las celdas. Lo que estoy intentando y no doy una es redimensionar el ancho de las imágenes por ejemplo a 300, pero si le pongo:

    .Width = 300

    Ya no me funciona correctamente, se superponen las imágenes, ¿No se si me puedas ayudar con ese detalle? De antemano gracias

    Pues si solo cambias eso, no deberían superponerse ¿estás seguro que ocurrió por solo cambiar un dato como el que muestras?

    Abraham Valencia

    Añade tu respuesta

    Haz clic para o

    Más respuestas relacionadas