Poner fotos en excel, codigo salta error

03/05/2005 - 03:06 por Daniel Padilla Cañamero | Informe spam
KL me ayudo con esta macro pero me sale un error :

Sub test()
Dim Imagen As Shape, Ruta As String
Dim Izquierda As Single, Arriba As Single, Escala As Single

'La ruta y el nombre del archivo con la imagen
Application.Dialogs(xlDialogInsertPicture).Show
'los puntos desde el extremo izquierdo de la hoja
Izquierda = Columns("A:C").Width
'los puntos desde el extremo superior de la hoja
Arriba = Rows("1:5").Height
Escala = 0.5 'o sea 50% del tamaño original.

Set Imagen = ActiveSheet.Shapes.AddPicture _
(Ruta, True, True, Izquierda, Arriba, 1, 1)
With Imagen
.ScaleHeight Escala, msoCTrue, msoScaleFromTopLeft
.ScaleWidth Escala, msoCTrue, msoScaleFromTopLeft
End With
End Sub

Este es el codigo cuando uno quiere inserta la imagen se abre la ventana
para buscar dicha imagen q uno desee pero al dar click en insertar imagen
sale el mensaje "Se ha producido el error '1004' en tiempo de ejecución:
No se encontró el archivo especificado.

A pesar de este mensaje si inserta la foto al dar click en depurar me
resalta en amarillo:

Set Imagen = ActiveSheet.Shapes.AddPicture _
(Ruta, True, True, Izquierda, Arriba, 1, 1)

Espero puedan ayudarme la idea es q la foto cualquiera q fuese su tamaño
entre en un rango de celdas de A1 a B7 la columna A y B tendra un ancho de
6.86 c/u.
Se necesita ese tamaño por ser fotos tamaño carnet.

Espero su gran colaboracion gracias por su tiempo
Saludos Cordiales
Daniel Padilla Cañamero
Lima-Perú

Preguntas similare

Leer las respuestas

#1 KL
03/05/2005 - 08:48 | Informe spam
Hola Daniel,

El codigo que citas no es exactamente el que te di - no estaba diseñado para
la instruccion: Application.Dialogs(xlDialogInsertPicture).Show.
Si necesariamente quieres usar un dialogo usa el codigo que sigue.

Saludos,
KL

Sub test()
Dim Imagen As Shape, Ruta As Variant
Dim Ancho As Single, Alto As Single, Escala As Single

'La ruta y el nombre del archivo con la imagen
Ruta = Application.GetOpenFilename _
("Todos Los Archivos,*.*", , "Abrir la imagen")
If Ruta = False Then
MsgBox "Se ha cancelado la operacion."
Exit Sub
End If
'los puntos de ancho
Ancho = Columns("A:B").Width
'los puntos de alto
Alto = Rows("1:7").Height

Set Imagen = ActiveSheet.Shapes.AddPicture _
(Ruta, True, True, 1, 1, Ancho, Alto)
End Sub
Respuesta Responder a este mensaje
#2 Héctor Miguel
03/05/2005 - 10:15 | Informe spam
hola, chicos !

solamente para comentar que... cada vez que se use el codigo...
[si 'efectivamente' se agrega una 'foto']...
-> se estaran 'amontonando' las imagenes [la 'nueva' sobre la 'anterior']
[obviamente las anteriores iran quedando 'ocultas', pero... ahi seguiran 'hasta...']
-> y [probablemente] se estara 'poniendo en riesgo' la 'integridad' del archivo :-(
[creo que] valdria la pena 'diseñar' una 'descarga/eliminacion' de las fotos 'viejitas' :))

saludos,
hector.
Respuesta Responder a este mensaje
#3 KL
03/05/2005 - 15:12 | Informe spam
Hola HM,

La verdad es que al no saber como se iba a utilizar el codigo me habia
concentrado en la tarea inmediata de depurar el macro, pero tienes razon
habria que incorporar unas lineas para eliminar la imagen anterior. A mi se
me ocurren dos cosas:

1) Si no hay otras imagenes en la hoja, entonces despues de "End If"
ponemos:

On Error Resume Next
ActiveSheet.Pictures(1).Delete


2) Si la imagen que se introduce por el macro no es unica ir poniendoles a
todas las imagenes introducidas unos nombres caracteristicos para poder
buscarlos luego. Algo asi:

Sub test()
Dim Imagen As Shape, Ruta As Variant
Dim Ancho As Single, Alto As Single, Escala As Single

'La ruta y el nombre del archivo con la imagen
Ruta = Application.GetOpenFilename _
("Todos Los Archivos,*.*", , "Abrir la imagen")
If Ruta = False Then
MsgBox "Se ha cancelado la operacion."
Exit Sub
End If
On Error Resume Next
For Each Imagen In ActiveSheet.Shapes
If Imagen.Name = "FotoCarnet" Then _
Imagen.Delete
Next Imagen
'los puntos de ancho
Ancho = Columns("A:B").Width
'los puntos de alto
Alto = Rows("1:7").Height

Set Imagen = ActiveSheet.Shapes.AddPicture _
(Ruta, True, True, 1, 1, Ancho, Alto)
Imagen.Name = "FotoCarnet"
End Sub


Saludos,
KL

"Héctor Miguel" wrote in message
news:
hola, chicos !

solamente para comentar que... cada vez que se use el codigo...
[si 'efectivamente' se agrega una 'foto']...
-> se estaran 'amontonando' las imagenes [la 'nueva' sobre la 'anterior']
[obviamente las anteriores iran quedando 'ocultas', pero... ahi
seguiran 'hasta...']
-> y [probablemente] se estara 'poniendo en riesgo' la 'integridad' del
archivo :-(
[creo que] valdria la pena 'diseñar' una 'descarga/eliminacion' de las
fotos 'viejitas' :))

saludos,
hector.

Respuesta Responder a este mensaje
#4 Daniel Padilla Cañamero
03/05/2005 - 23:03 | Informe spam
Muy amable a ambos por responder gracias
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida