En los foros, en mucha ocasiones, los usuarios desean convertir algún rango de sus hojas en un archivo de imagen por diversos motivos. Si bien Excel no tiene una herramienta propia que logre convertir un rango y exportarlo como archivo de imagen de modo automático, a través de VBA podemos lograrlo.
Para lograrlo vamos a comentar que es lo que haremos al estilo herramientas de Excel. Primero vamos a copiar el rango que deseamos tener como imagen y aprovecharemos que a través de “Pegado especial” dicho rango copiado se puede pegar justamente como imagen pero ello lo haremos dentro de un objeto “Chart” ¿por qué? Pues los objetos “Chart” tienen el método “Export” que nos permitirá exportar el nuevo objeto como un archivo de imagen propiamente dicho. Entonces, manos a la obra.
Vamos a suponer que el rango que necesitamos exportar va de la celda “A1” a la “D5”:
Vamos a suponer que el rango que necesitamos exportar va de la celda “A1” a la “D5”:
Para obtener la imagen de ese rango, vamos a usar las propiedades Top (Límite superior), Left (límite izquierdo), Width (Ancho) y Height (Alto) del rango que necesitamos. Previamente declararemos las variables, obtendremos los datos requeridos y usaremos el método “CopyPicture” para copiar el rango deseado.
Dim Izquierda As Single, Arriba As Single, Ancho As Single, Alto As Single
Application.DisplayAlerts = False
Application.ScreenUpdating= False
With Worksheets("Hoja1").Range("A1:D5")
Izquierda = .Left
Arriba = .Top
Ancho = .Width
Alto = .Height
.CopyPicture
End With
Para evitar las alertas del Excel las hemos desactivado así como hemos desactivado las actualizaciones de pantalla.
Luego lo que haremos es crear un objeto “Chart” cuyas características de tamaño serán similares al rango de nuestro interés (lo lograremos a través de las variables usadas), pegaremos en él la imagen y con el método “Export” exportaremos la imagen hacia la ruta y con el nombre que deseemos. Por último con el método “Delete” borraremos el gráfico una vez ya exportado.
Luego lo que haremos es crear un objeto “Chart” cuyas características de tamaño serán similares al rango de nuestro interés (lo lograremos a través de las variables usadas), pegaremos en él la imagen y con el método “Export” exportaremos la imagen hacia la ruta y con el nombre que deseemos. Por último con el método “Delete” borraremos el gráfico una vez ya exportado.
With Worksheets("Hoja1").ChartObjects.Add(Izquierda, Arriba, Ancho, Alto)
.Chart.Paste
.Chart.Export "D:\Temporal.jpg"
.Delete
End With
No olvides reemplazar el rango por el tuyo, los nombres de la hoja por las tuyas y por supuesto la ruta y nombre del archivo también tienes que adaptarlas. Eso es todo por hoy.
Hola, he intentado utilizar esa macro, con un nombre y ruta de archivo especificando en celda P1 ruta y p2 y nombre respectivamente, pero no me resulta, y si ejecuto tu macro pasa a paso resulta bien, pero si la ejecuto desde el sistema no guarda la imagen solo una hoja en blanco, uso excel 2016, no se si sera por eso
ResponderBorrarHola, gracias por leer y comentare. Hay algunos problemas de seguridad que hacen que ocurra lo que mencionas, pero hay una forma de evitarlos, prometo escribir algo al respecto pronto, igual y ya que nos "vemos" en otros lados y foros, por favor recuérdamelo. Saludos.
BorrarHola, publicaste al respecto? necesito generar la imagen de muchos rangos de datos.
BorrarMe podrías por favor colaborar. Te agradezco
ResponderBorrar