Imágenes dinámicas (.jpg) en Excel

Hola, tengo una hoja de Excel en la que tengo que insertar dinámicamente (mediante código) 6 imágenes en formato .jpg (de casi 1 MB cada una), sobre las posiciones que le indicamos en modo diseño, hasta aquí ningún problema.
El problema surge cuando miro el tamaño de la hoja y veo que ha crecido hasta los 50 MB, con lo que se hace difícil trabajar con él. Sospecho que éste aumento de tamaño se debe a que el comando LoadPicture no carga las imágenes en formato .jpg sino que realiza una conversión a .bmp, con lo que el tamaño de las imágenes se multiplica por casi 10.
Mi pregunta es, ¿hay alguna manera de que acepte los .jpg sin convertirlos? En caso negativo ¿hay alguna otra manera de colocar los jpg's dinámicamente en las posiciones indicadas?
Muchas gracias por su atención
Espero su respuesta ansiosamente :)
Eduardo

1 respuesta

Respuesta
1
Ya que no se trata de un formulario, que tal si pruebas con este otro método:
ActiveSheet.Pictures.Insert("C:\Logos\FerAlo.jpg").Select
De esta manera te aseguras que no sea convertido a un pesado bmp.
Espero haber llegado a tiempo ;)
Un abrazo!
Fernando
Hola de nuevo! Ante todo muchas gracias por tu ayuda, pero ahora me encuentro con otro problema. Tengo que proteger la hoja de excel y el código, pero cuando la protejo desde Herramientas/Proteger/Proteger Hoja o Libro me da un fallo en el código y no se ejecuta. ¿Qué puedo hacer al respecto? ¿Hay alguna manera de bloquear la página desde el código de Visual Basic?
Muchas gracias por tu ayuda, interés y rapidez
Hubiese sido bueno que meniconaras exactamente cuál fue el mensaje de fallo que recibiste.
De todos modos es probable que si la hoja estaba protegida al momento de, por ejemplo, insertarle la imagen, la macro arrojara un error.
Desde luego, es posible proteger la página desde el código.
La secuencia sería esta:
Application.Screenupdating = False 'evita que el usuario vea qué está pasando
ActiveSheet.Unprotect password:="PP" 'Desprotejo la hoja
'Ejecuta las acciones sobre hoja desprotegida:
ActiveSheet.Pictures.Insert("C:\Logos\FerAlo.jpg").Select
'otras acciones sobre la hoja
ActiveSheet.Protect password:="PP", DrawingObjects:=True, Contents:=True, Scenarios:=True ' Protege hoja
Application.Screenupdating = True 'devuelve el control al usuario
Ojala esto te ayude a completar tu proyecto.
Muy buen fin de semana
Fernando

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas