Cargar varias imágenes en excel según valor de celda

Estoy creando un catalogo de fallas en excel y quiero que según seleccione los dispositivos me muestre imágenes de los mismos. He estado leyendo y probando ya hace algún tiempo soluciones diferentes acá expuestas pero aun no he logrado lo que necesito.

El archivo sobre el cual trabajo esta en la carpeta catalogo y junto al archivo tengo la carpeta imágenes, todas en formato .jpg.

En el archivo cuentos con tres listas de selección asi:

EQUIPO Lista Independiente (Celda C8)

DISPOSITIVO Lista dependiente de EQUIPO (Celda C9)

PIEZA Lista dependiente de DISPOSITIVO (Celda C10)

Al seleccionar el tercer item se realiza un BUSCARV y me muestra el resultado de posibles fallas factibles soluciones.

La idea es que cada vez que selecciono un item me aparezca la imagen (he probado con controles ActiveX que creo es la mejor opción, pero no he podido cargar la imagen dentro del control).

1 Respuesta

Respuesta
1

H o l a:

Envíame tu archivo con algunos ejemplos de cómo están tus datos. Dime en dónde se va a poner la imagen. También envíame los archivos de las imágenes que pusiste en los ejemplos.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Edgar Bernal” y el título de esta pregunta.

Hola Dante, muchas gracias por su pronta respuesta, ya ha sido enviado el correo.

De nuevo agradezco su atención y su tiempo...

H o l a:

Te anexo la macro para los eventos de tu hoja.

Private Sub Worksheet_Change(ByVal target As Range)
'Por.Dante Amor
    Set imagen = Nothing
    Select Case target.Address
        Case Range("C8").Address, Range("C8:D8").Address
            ActiveSheet.Image1.Picture = Nothing
            ActiveSheet.Image2.Picture = Nothing
            ActiveSheet.Image3.Picture = Nothing
            Set imagen = ActiveSheet.Image1
        Case Range("C9").Address, Range("C9:D9").Address
            ActiveSheet.Image2.Picture = Nothing
            ActiveSheet.Image3.Picture = Nothing
            Set imagen = ActiveSheet.Image2
        Case Range("C10").Address, Range("C10:D10").Address
            ActiveSheet.Image3.Picture = Nothing
            Set imagen = ActiveSheet.Image3
    End Select
    If Not imagen Is Nothing Then Call Insertar(imagen, target)
End Sub
'
Sub Insertar(imagen, target)
'Por.Dante Amor
    ruta = ThisWorkbook.Path & "\imagenes\"
    Set h = Sheets("IMAGENES")
    Set b = h.Columns("A").Find(target.Value, lookat:=xlWhole)
    If Not b Is Nothing Then
        arch = h.Cells(b.Row, "C")
        If Dir(ruta & arch) <> "" And arch <> "" Then
            imagen.Picture = LoadPicture(ruta & arch)
        End If
    End If
End Sub

' : )
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias
' : )

Dante buen día...

Muchas gracias por su colaboración exactamente era lo que necesitaba, es usted muy amable.

Como tema de complemento una duda, encontré esto mientras navegaba hace unos días. Dentro de la solución que me envía, ¿es viable colocarlo?

Workbook_BeforeClose
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Sheets("NombreHoja").Image1.Picture = Nothing
Sheets("NombreHoja").Range("ValorCelda").ClearContents
End Sub
Workbook_BeforeSave
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, _
Cancel As Boolean)
Sheets("NombreHoja").Image1.Picture = Nothing
Sheets("NombreHoja").Range("ValorCelda").ClearContents
End Sub

Que según entiendo estos eventos se crean en el objeto ThisWorkbook. Y aplicado al archivo seria algo así...

Workbook_BeforeClose

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Sheets("EVALUADOR").Image1.Picture = Nothing
Sheets("EVALUADOR").Image2.Picture = Nothing
Sheets("EVALUADOR").Image3.Picture = Nothing
Sheets("EVALUADOR").Range("C8").ClearContents
Sheets("EVALUADOR").Range("C9").ClearContents
Sheets("EVALUADOR").Range("C10").ClearContents
End Sub


Workbook_BeforeSave

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, _
Cancel As Boolean)
Sheets("EVALUADOR").Image1.Picture = Nothing
Sheets("EVALUADOR").Image2.Picture = Nothing
Sheets("EVALUADOR").Image3.Picture = Nothing
Sheets("EVALUADOR").Range("C8").ClearContents
Sheets("EVALUADOR").Range("C9").ClearContents
Sheets("EVALUADOR").Range("C10").ClearContents
End Sub

Agradezco su atención y su tiempo.

H o l a:

Por lo que veo en las macros es para quitar las imágenes y guardar el archivo, de esa forma el archivo no ocupará un gran tamaño. Todo depende para qué lo quieres, si quieres guardar el archivo con las imágenes, por ejemplo, para enviarlo por correo, entonces no son necesarias las macros; si requieres el archivo sin imágenes entonces puedes poner las macros.

Sal u dos

¡Gracias! 

Muy agradecido con usted, me ha sido de gran ayuda su conocimiento, dedicación y tiempo.

Muy buen día.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas