Saltar al contenido

código fuente para imágenes no encontradas coloque una imagen llamada "no hay imagen"


Recommended Posts

publicado

Hola a todos, tengo una macro que inserta imágenes la cual me funciona excelente, lo que hace es que en la columna B tengo el nombre de un modelo y si existe pone la imagen en la columna A que la jala de una carpeta y cuando no exista la imagen se salta a la que sigue. La duda que tengo es cómo decirle a la macro que cuando no exista la imagen no se salte a la que sigue sino que me ponga una imagen titulada "no hay imagen" que está dentro de la misma carpeta.

Esta macro funciona con un On Error Resume Next. Cuál sería el código fuente para que en vez que se salte a la que sigue me ponga esa imagen llamada "no hay imagen"?

Agradezco mucho su apoyo.

publicado

Hazlo al revés, deja el On Error Resume Next e inserta la imagen "No hay imagen" inmediatamente antes de insertar la imagen del modelo, de esta manera, si la imagen del modelo no existe, quedará mostrada la imagen "No hay imagen".

publicado

.

Te dejo la macro corregida.

Sub InsertarImágenes()
Dim MiPc, MiCarpetaDeImágenes, MisImágenes, MiImagen, SinImagen
'-------
Set MiPc = CreateObject("Scripting.FileSystemObject")
[COLOR=#0000ff]Set MiCarpetaDeImágenes = MiPc.GetFolder(ThisWorkbook.Path & "[B]\imagenes[/B]")[/COLOR]
Set MisImágenes = MiCarpetaDeImágenes.Files
'-------
Application.ScreenUpdating = False
Range("B7").Select
[COLOR=#0000ff]SinImagen = MiCarpetaDeImágenes & "[B]\sin imagen.jpg[/B]" '<=================[/COLOR]
Do Until ActiveCell = ""
'--------
On Error Resume Next
ActiveSheet.Shapes("@@" & ActiveCell.Address(False, False)).Delete
On Error GoTo 0
'--------
MiImagen = MiCarpetaDeImágenes & "\" & ActiveCell & ".jpg"
If MiPc.FileExists(MiImagen) = False Then MiImagen = SinImagen
'-------
ActiveSheet.Pictures.Insert(MiImagen).Select
With Selection.ShapeRange
.Name = "@@" & ActiveCell.Address(False, False)
.LockAspectRatio = False 'Permite modificar la imagen
.Top = ActiveCell.Offset(, -1).Top 'Distancia al borde superior
.Left = ActiveCell.Offset(, -1).Left 'Distancia al borde izquierdo
.Height = ActiveCell.Offset(, -1).Height 'Alto de la imagen
.Width = ActiveCell.Offset(, -1).Width 'Ancho de la imagen
End With
ActiveCell.Offset(1, 0).Select
Loop
End Sub
[/CODE]

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.