Función personalizada que inserta imágenes en línea para versiones de Excel que no dispongan de la función Imagen

0️⃣ Abrir el editor de Visual Basic

Presionar las teclas  Alt  F11 

1️⃣ Copiar el siguiente Código:

Function ImagenOnline(URL·https As String)
    Dim I As Picture, D As String
    D = Application.Caller.Address(False, False, 1)
    For Each I In ActiveSheet.Pictures
        If I.TopLeftCell.Address(False, False, 1) = D Then
            I.Delete
        End If
    Next
    Set I = ActiveSheet.Pictures.Insert(URL·https)
    With I
        .Left = Range(D).Left
        .Top = Range(D).Top
        .Width = Range(D).Width
        .Height = Range(D).Height
        .Placement = xlMoveAndSize
    End With
    I.Visible = True
End Function

2️⃣ Insertar un módulo y pegar el Código

🟧 OPCIÓN 1: Si desea que la UDF solo esté disponible en el libro que se está utilizando, debe agregar el módulo en el VBAProject , que lleva el mismo nombre que el libro. Una vez que haya escrito el código, se debe guardar como un libro de Excel habilitado para macros para que esté disponible en dicho libro.


🟧 OPCIÓN 2: Para hacer que la UDF esté disponible como una función nativa de Excel en cualquier libro, es necesario guardarla como un complemento de Excel e instalarla.

3️⃣ Acerca de la UDF "ImagenOnline"

Esta función acepta un parámetro 
(URL·https), el cual debe ser un enlace HTTPS de una imagen en línea. El enlace debe, incluir "https://" y el formato de archivo de la imagen (por ejemplo, .jpg, .png, etc.). 

La función comienza por declarar dos variables, una para la imagen (I) y otra para la dirección de la celda que contiene la fórmula que llama a la función (D). Luego, utiliza un bucle For Each para recorrer todas las imágenes en la hoja activa y verificar si alguna de ellas está ubicada en la misma celda que la fórmula que llama a la función. Si encuentra una coincidencia, elimina la imagen. Esto con el fin de poder extender la función a otras celdas sin copiar la imagen insertada. 

A continuación, utiliza el método Pictures.Insert para insertar la imagen desde la URL proporcionada. Luego, establece las propiedades de la imagen.

La línea ".Left = Range(D).Left" establece la posición horizontal de la imagen en la hoja de cálculo, alineando la imagen con la columna de la celda que llamó a la función.

".Top = Range(D).Top" establece la posición vertical de la imagen en la hoja de cálculo, alineando la imagen con la fila de la celda que llamó a la función.

".Width = Range(D).Width" establece el ancho de la imagen en la hoja de cálculo, estableciéndolo en el mismo ancho que la celda que llamó a la función.

.Height = Range(D).Height" establece la altura de la imagen en la hoja de cálculo, estableciéndolo en la misma altura que la celda que llamó a la función.

Finalmente, la línea ".Placement = xlMoveAndSize" establece la forma en que la imagen se ajustará dentro de la celda que la contiene. "xlMoveAndSize" indica que la imagen se ajustará automáticamente al tamaño de la celda y se moverá con la celda si esta se mueve.

Por último, se establece la propiedad Visible de la imagen en True para hacerla visible en la hoja de cálculo.

4️⃣ Limitaciones:

La UDF tiene algunas limitaciones que es importante tener en cuenta para su correcto uso. 

🔴 La descarga de imágenes requiere una conexión a Internet estable y un buen desempeño de procesamiento en la PC. Para lograr un rendimiento óptimo de la UDF, se recomienda cambiar temporalmente la configuración de las Opciones para el Cálculo a Manual, antes de eliminar hojas, reordenar, insertar y/o eliminar filas y/o columnas. Al cambiar el Modo Automático a Manual, se evita que la UDF se ejecute innecesariamente cada vez que se realice una de las acciones mencionadas.
🟡 Si la inserción de la imagen tarda demasiado, se debe verificar que la URL de la imagen sea Https, que la conexión a Internet sea estable, y que la velocidad de procesamiento del equipo de cómputo sea buena.  Si la URL de la imagen es muy larga, o se insertará una considerable cantidad de imágenes, la inserción de la imagen puede tardar un poco en completarse, lo que puede hacer que la hoja de cálculo parezca congelada por un momento. En este caso, se recomienda tener paciencia y esperar a que la imagen se inserte correctamente.

🟡 La UDF solo ajustará la imagen en la celda manteniendo su relación de aspecto. Por lo tanto, no ofrece las mismas funcionalidades que la función oficial "Imagen" de Excel, como el texto alternativo para describir y poder especificar las dimensiones de la imagen . Por lo que se debe asegurar de que las celdas tengan el tamaño adecuado que se requiere para la imagen. 

🟡 La UDF utiliza la propiedad Placement para hacer que la imagen se ajuste a la celda y se mueva con ella, por lo que no se debe mover la imagen después de su inserción, ya que podría dejar de ajustarse a la celda y moverse con ella. Si se requiere modificar la posición de la imagen, se debe realizar moviendo la celda donde se encuentra la imagen.

🟢 La UDF mostrará un cero por defecto junto a la imagen insertada, por lo que se debe cambiar el color de fuente al mismo del relleno de celda para ocultar el cero. 

Comentarios