ajustar imagen con macro en excel

23/08/2009 - 02:11 por RGC | Informe spam
Amigos,
Tengo un codigo par auna macro en excel, que lo que intenta hacer es
insertar una imagen y ajustarla automaticamente al tamaño de la celda, pero
solo logro insertarla, pero no puedo hacer que se ajsute, agradecere su ayuda.
el codigo es:
Sub fotoinsertada()

Dim foto As Object, Arriba As Double, Izquierda As Double, Ancho As Double,
Alto As Double
Dim ruta As String
Application.ScreenUpdating = False
On Error Resume Next

Hoja1.Shapes("Foto").Delete
'ruta = "H:\ALL FASHION\DAMAS\DSC05037.jpg"
ruta = Application.Dialogs(xlDialogInsertPicture).Show//AQUI APERTURO LA
CAJA DE DIALGO Y ELIGO LA IMAGEN

Set foto = Hoja1.Pictures.Insert(ruta)
'With ActivateCell.Select //AQUI INTENTO QUE SE AJUSTE A LA CELDA ACTIVA
With Range("d1") //CON ESTE Y TODA LA RUTA H:\ALL
FASHION\DAMAS\DSC05037.jpg, FUNCIONA EL AJUSTE, PERO QUIERO ESCOGER LA
IMAGEN, POR Q SON VARIAS INCERCIONES DE IMAGENES

Arriba = .Top
Izquierda = .Left
Ancho = .Offset(0, .Columns.Count).Left - .Left
Alto = .Offset(.Rows.Count, 0).Top - .Top
End With
With foto
.Name = "Foto"
.Top = Arriba
.Left = Izquierda
.Width = Ancho
.Height = Alto
End With
Set foto = Nothing
Application.ScreenUpdating = True

End Sub
 

Leer las respuestas

#1 Héctor Miguel
23/08/2009 - 03:44 | Informe spam
hola (...), ?????

Tengo... una macro... que... intenta... insertar una imagen y ajustarla... al tamano de la celda
... logro insertarla, pero no puedo hacer que se ajsute, agradecere su ayuda...



con las modificaciones que haces al codigo "original" pierdes el control de las imagenes insertadas
concretamente, el metodo: Application.Dialogs(xlDialogInsertPicture).Show

1) lo que hace es INSERTAR la imagen seleccionada EN LA CELDA ACTIVA (si el usuario lo acepta)
la imagen queda como "seleccion activa" (objeto seleccionado) y tu codigo no sabe cual es "su nombre"
por lo tanto, no puede administrar sus propiedades (alto, ancho, posiciones, etc.), ademas...
si se trata de varias imagenes, por cada una debes PRIMERO seleccionar "la celda" para insertar la imagen

2) si el usuario CANCELA el dialogo, este devuelve un "false" (pero esto ya no lo sabe tu codigo por su forma de uso)

por otro lado, no se que tan indispensable sea insertar VARIAS imagenes en una sola hoja (o libro)...
con la posibilidad de "poner en riesgo" la integridad de tu archivo (dependiendo del numero de objetos insertados ?)

comentas (si hubiera) los detalles que dejas "en el tintero" ?
saludos,
hector.

__ el codigo expuesto __
Sub fotoinsertada()
Dim foto As Object, Arriba As Double, Izquierda As Double, Ancho As Double,
Alto As Double
Dim ruta As String
Application.ScreenUpdating = False
On Error Resume Next
Hoja1.Shapes("Foto").Delete
'ruta = "H:\ALL FASHION\DAMAS\DSC05037.jpg"
ruta = Application.Dialogs(xlDialogInsertPicture).Show//AQUI APERTURO LA CAJA DE DIALGO Y ELIGO LA IMAGEN
Set foto = Hoja1.Pictures.Insert(ruta)
'With ActivateCell.Select //AQUI INTENTO QUE SE AJUSTE A LA CELDA ACTIVA
With Range("d1") //CON ESTE Y TODA LA RUTA H:\ALL FASHION\DAMAS\DSC05037.jpg, FUNCIONA EL AJUSTE, PERO QUIERO ESCOGER LA IMAGEN, POR Q SON VARIAS INCERCIONES DE IMAGENES
Arriba = .Top
Izquierda = .Left
Ancho = .Offset(0, .Columns.Count).Left - .Left
Alto = .Offset(.Rows.Count, 0).Top - .Top
End With
With foto
.Name = "Foto"
.Top = Arriba
.Left = Izquierda
.Width = Ancho
.Height = Alto
End With
Set foto = Nothing
Application.ScreenUpdating = True
End Sub

Preguntas similares