domingo, 20 de mayo de 2012

VBA: Centrar una imagen en el interior de una celda de Excel.

Siguiendo con el tema de los últimos días, hoy veremos cómo podemos tratar una imagen(Picture), para mediante una macro de Excel, ajustarla lo máximo posible, en el interior de una celda.
En particular trabajaremos con las propiedades .Top, .Left, .Height y .Width

Supongamos tenemos ya una imagen en nuestra Hoja de Excel, y queremos moverla, adaptádola a otra celda, por ejemplo F5:

VBA: Centrar una imagen en el interior de una celda de Excel.



Insertaremos en un módulo del Explorador de proyectos del Editor de VBA el siguiente código, formando nuestra macro de Excel:

Sub CentrarImagen()
Dim Fotos As Object
Dim celda As Range

Set celda = Cells(5, "F")
Set Fotos = ActiveSheet.Shapes.Range(Array("1 Picture"))
'asignamos un Anco a la columna de la celda F5, proporcianada al ancho de la Imagen
celda.ColumnWidth = Fotos.Width / 10.67111364
With Fotos
    .Top = celda.Top
    'reducimos el alto y ancho de la foto
    .Width = .Width / 1.5
    .Height = .Height / 1.5
    'se centra horizontalmente en la celda indicada
    .Left = celda.Left + (celda.Width - Fotos.Width) / 2
    'damos altura a la fila igual al alto final de la imagen
    celda.EntireRow.RowHeight = .Height
End With

Set celda = Nothing
Set Fotos = Nothing

End Sub


Podemos ver el resultado, ampliado, de cómo queda situada la imagen dentro de la celda F5, tras ajustar Ancho, Alto (reducidos en un 33%) y centrarla horizontalmente respecto a la celda F5.

VBA: Centrar una imagen en el interior de una celda de Excel.


Como vemos, conseguimos adaptar el tamaño de celda al tamaño final de la imagen, de manera bastante ajustada.

No hay comentarios:

Publicar un comentario en la entrada