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

Preguntas similare

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
Respuesta Responder a este mensaje
#2 RGC
24/08/2009 - 16:49 | Informe spam
Hola Hector,
Agradesco tu respuesta, mi siguiente consulta al respecto es:
COmo puedo hacer para que una vez escogida la imagen, atravez de la caja de
dialogo, se reconzca el nombre para poder modificar las propiedades.
Gracias.

"Héctor Miguel" escribió:

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



Respuesta Responder a este mensaje
#3 Héctor Miguel
24/08/2009 - 22:09 | Informe spam
hola (...), ?????

... mi siguiente consulta al respecto es:
COmo puedo hacer para que una vez escogida la imagen, atravez de la caja de dialogo
se reconzca el nombre para poder modificar las propiedades...



tomando como punto de partida que la imagen incrustada queda como objeto "activo" (punto 1 del mensaje anterior)
puedes hacer referencia (directamente) a la seleccion activa (Selection), ya despues decidiras como "volver" a las celdas (p.e.)

with selection
.name = "foto"
.top = arriba
.left = izquierda
.width = ancho
.height = alto
end with

saludos,
hector.

__ OP __
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 ?)
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida