Te anexo la macro, tienes que cambiar "Hoja2" por el nombre de la hoja que tienes las celdas que vas a guardar como imagen. También cambia "A1:C10", por el rango de celdas.
En la celda D1 debe estar el nombre del archivo. El archivo se guardará en la misma ruta en la que guardes el archivo con esta macro.
Sub CopiarCeldasComoImagen()
'Por.Dante Amor
'
Application.ScreenUpdating = False
Set h1 = Sheets("Hoja2")
Set h2 = Sheets.Add
ruta = ThisWorkbook.Path & "\"
archivo = ruta & h1.[D1] & ".JPEG"
'
rango = "A1:C10"
'
With h1.Range(rango)
fi = .Cells(1, 1).Row
ff = .Rows.Count + fi - 1
ci = .Cells(1, 1).Column
cf = .Columns.Count + ci - 1
izq = .Cells(1, 1).Left
der = h1.Cells(1, cf + 1).Left
baj = .Cells(1, 1).Top
arr = h1.Cells(ff + 1, 1).Top
anc = der - izq
alt = arr - baj
End With
'
h1.Range(rango).CopyPicture
h2.Shapes.AddChart
With h2.ChartObjects(1)
.Width = anc
.Height = alt
.Chart.Paste
.Chart.Export archivo
.Delete
End With
Application.DisplayAlerts = False
h2.Delete
Application.DisplayAlerts = True
'
MsgBox "Celdas guardadas como imagen en el archivo: " & archivo, vbInformation, Date
End Sub
Sigue las Instrucciones para ejecutar la macro
- Abre tu archivo de excel
- Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
- En el menú elige Insertar / Módulo
- En el panel del lado derecho copia la macro
- Para ejecutarla presiona F5
Saludos. Dante Amor
Recuerda valorar la respuesta.
Esta Macro Es Muy Interesante, En El Apartado With Estableces Variables, Según Propiedades, Y Para Evitar Volver A Hacer Alusión Al Objeto Lo Haces Mediante With, En Algún Momento Hice Esto, Pero La Verdad Es Que Desconocía Si Era Correcto, Y Al Ver Que Tú Lo Empleas, Creo Que Voy Por Buen Camino Je, Excelente Macro, Saludos. - Dantte Black
HOLA AMIGO, E probado tu macro y es efectiva estoy haciendo un proyecto para aplicar en un formato en el trabajo y probando en mi pc la macro funciona todo correctamente envié el documento al compu del trabajo, enruté nuevamente y cuando ejecuto la macro funciona pero me guarda las captures en blanco, intente realizar todo el procedimiento de nuevo es decir cree nuevamente la macro pero sigue sucediendo el mismo problema, QUE PUEDO HACER EN ESE CASO??? GRACIAS [email protected] - Tata Drums
Tal vez es la versión de office o de windows de la compu de tu trabajo. Es la única versión que tengo.Incluso puede ser la memoria, intenta ejecutar la macro, pero solamente abre excel. - Dante Amor
Hola, he usado el código de esta macro y va muy bien, pero tengo un problema, al crear un botón para que ejecute el código, la imagen se crea pero en blanco, si lo ejecuto paso a paso (F8) lo hace bien, ¿qué podría estar sucediendo?, tengo office 365 y W10 - Fidel Yacoub
Borra esta línea y prueba otra vez: Application.ScreenUpdating = False - Dante Amor
Sigue sin funcionar, genera la imagen, la guarda en la ruta, pero cuando la abres esta en blanco - Fidel Yacoub
Después de cada una de estas líneas: h1.Range(rango).CopyPicture h2.Shapes.AddChart .Chart.Export archivo agrega esta línea: DoEvents - Dante Amor
en Excel 2013 anda muy bien la macro - Andrés López Acosta
Gracias Andrés, también me funciona en 2003 y en 2007. - Dante Amor
Hola Dante, he agregado el DoEvents donde me has dicho pero nada, creo que debe ser la versión del office por que esta macro funcionaba perfectamente con el 2013, se tendrá que agregar alguna referencia o complemento? - Fidel Yacoub
No tengo esa versión de office365, no podría probar. Tal vez si agregas un tiempo, después del addchart agrega la siguiente línea: Application.Wait Now + TimeValue("00:00:01") también borra estas líneas .delete y h2.delete ejecuta la macro con F5 y revisa si se creó la imagen en la hoja nueva - Dante Amor
Hola Dante, ya funciona, muchas gracias por la ayuda ;) - Fidel Yacoub
Si puedes poner una nueva pregunta para postear la macro actualizada para la versión office365. En el desarrollo de la pregunta pon "Para Dante Amor" - Dante Amor
Hola Dante enserio me ayudo en mucho tu código mi pregunta es la siguiente ¿cómo podría ponerle nombre a la imagen según un rango en la Hoja de excel? - MiiLu Ty
En la macro en esta línea archivo = ruta & h1.[D1] & ".JPEG" toma de la celda D1 el dato para poner ese dato como nombre de archivo.A qué te refieres con: "cómo podría ponerle nombre a la imagen según un rango en la Hoja de excel?" En esta parte de comentarios no se puede poner código para la respuesta, crea una nueva pregunta y la reviso - Dante Amor
Gracias entendí perfectamente - MiiLu Ty