¿Cómo ver una imagen desde un listbox?

Tengo un formulario donde contiene un listbox cuya funcio de dicho objeto es mostrarme Información sacada de una base de datos, la base de datos a demás de tener información también contienen imágenes o mejor dicho la dirección de su ubicación. Lo que quiero es ya encontrada dicha información muestre la imagen al darle click a la información que requerí .

Respuesta
1

Hol.a

O sea la ruta de las imágenes queda en el "ListBox" ¿cierto? ¿En qué número de columna? Si puedes manda al menos una captura de pantalla del "ListBox" con los datos.

Abraham Valencia

Exacto la ruta de la imagen se muestra en el listbox pero no me abre a darle click 

Asi se ve el listbox

Hol.a

Coloca un objeto "Image" en tu "UserForm", supongamos que se llama "Image1", entonces tomando en cuenta que las rutas de las imágenes están en la columna 6, que tu "ListBox" tiene encabezados y que la matriz de los "ListBox" comienza en (0,0) [Filas, columnas] entonces algo así lo que haría es cargar la imagen correspondiente a la ruta de la primera fila:

Image1.Picture = LoadPicture(ListBox1.List(0, 5))

Comentas

Abraham Valencia

Osea que me dice que lo que pido no es posible por que ya había pensado en poner una Image1 pero no acepte la idea por el simple hecho que el usuari al buscar la imagen no podrá darle zoom ni nada por el estilo

Se puede emular el "Zoom" pero hay que programar más y no sé como andas en VBA, pero quizá lo que quieras en abrir con otro programa las imágenes ¿o no?

Abraham Valencia

Exacto quiero abrir las imágenes con el Visualizador de Fotos de Windows

Aja, entonces prueba así:

Coloca esto en la parte superior del módulo del "UserForm" (no debe haber nada sobre eso):

#If VBA7 Then
Private Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
#Else
Private   Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
#End If

Si tu Office es de 64 bits, quizá algunas letras de ese código las veas en rojo, no te preocupes.

Luego esto haría lo que deseas:

Dim MiImagen As String
MiImagen = ListBox1.List(0, 5)
ShellExecute 0, "open", MiImagen, "", "", 1

Comentas

Abraham Valencia

No se si lo coloque mal por que no me hace nada 

O sea ¿al dar doble click no pasa nada? ¿Ningún mensaje?

Abraham Valencia

No nada ni si quiera un mensaje 

Ah claro, hay un "On Error Resume Next" por eso no hay ningún mensaje. Bórralo y comentas.

Abraham Valencia

PD ¿Es la sexta columna la de las rutas?

No es por "On Error Resume Next"  lo quite y sigue sin funcionar y si es la sexta columna la que tiene la ruta de la imagen

Pues eso significa que hay un error en la ruta. Revísalas/verifícalas.

Abraham Valencia

Acabo de revisar que delante de la ruta tienes un "ver imagen", por eso no puede abrirlas, toma esas palabras como parte de la ruta

Abraham Valencia

Como debo colocarlo asi? C:\Users\fsepulveda\Desktop\Imagen

Esa es la ruta completa de mis imágenes

C:\Users\fsepulveda\Desktop\Imagen.jpg

No olvidar la extensión.

Abraham Valencia

Disculpa enserio me da pena pero no se como  implementar el codigo cada que lo hago sale asi 

Tranquila, la programación se aprende poco a poco. Asumo que quieres hacer eso para probar, entonces, si estás 100% segura que esa es la ruta correcta, solo deja como has puesto pero encierra esa ruta entre comillas:

"C:\Users\fsepulveda\Desktop\Imagen.jpg"

Abraham Valencia

Sigue sin funcionar :c

Je je je, te aseguro que es la ruta. Anda a esa imagen y toma captura de pantalla de sus propiedades (Click derecho al archivo y elige "Propiedades"), algo así:

Abraham Valencia

PD: Se supone que las imágenes están en tu PC ¿cierto?

Si esta en mi pc y eso fue lo que hice desde un principio

La ruta la puedes ver de todos modos en una de la primeras imágenes que te envíe que vendría siendo esta "C:\Users\fsepulveda\Desktop\hshshsh.jpg"

Prueba en un archivo nuevo, inserta un módulo "standard" y pega esto:

#If VBA7 Then
Public Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
#Else
public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
#End If
Sub RRR()
ShellExecute 0, "open", "C:\Users\fsepulveda\Desktop\hshshsh.jpg", "", "", 1
End Sub

Corre la macro "RRR" si no ocurre nada, lo siento pero es tu ruta la errada. Si abre el archivo, habrá que ver más de fondo aún.

Comentas

Abraham Valencia

No nada que funciona

Pues es la ruta al parecer pero igual otra pregunta, cuando a una imagen le da doble click ¿qué programa las abre?

Abraham Valencia

Cuando yo abro la imagen me sale el Visualizador de Fotos de Windows

Aunque parezca redundante de mi parte, por lo menos desde aquí y con todo lo que hemos conversado, parece que la ruta no es correcta.

Abraham Valencia

Mm no es la ruta es el código le cambie la ruta de mi imágenes y sigue in funcionar

Lo que descubrir fue que al quitar le ".jpg" me lleva es a la carpeta 

Pero no me abre la imagen

Estimada, por eso te decía lo de la ruta, yo puse que no te olvides la extensión y coloqué de ejemplo el ".jpg" como tú lo mantuviste asumí que casualmente era también la tuya, ya con lo que mencionas, es otra. Verifica por favor, si no sabes como ver la extensión, envía la captura de pantalla de las propiedades que te mencioné ayer y que no enviaste (por algo te lo pedí ;) )

Abraham Valencia

La extensión es "JPEG" y la ruta completa para esa imagen que muestras es:

"C:\Users\fsepulveda\Desktop\hshshsh\1234.JPEG"

Ese era el problema

Abraham Valencia

Ok pero para que me muestre todas mi imagenes como haria?

Por que con una sola dirección de la imagen me la abre pero quiero que me abra la imagen que yo seleccione

Intente poner la ruta de esta forma y tampoco me funciona "C:\Users\fsepulveda\Desktop\hshshsh.JPEG"

No olvides que llegamos a este punto porque teóricamente no funcionaba y aunque yo te decía lo de la ruta, tú insistías que ese no era el error.

Segundo, volviendo al problema inicial, en realidad antes que nada debes tener en el "ListBox" (o en las celdas) las rutas correctas, si no las corriges, cualquier cosa que intentemos hacer seguirá sin funcionar.

Abraham Valencia

Puede verificar las rutas de todas las imágenes en una de la primeras imágenes que le envie

Y en esas celdas no tienes rutas sino hipervínculos con texto que hace que el VBA no los reconozca como rutas. Tienes dos alternativas si quieres que tu idea funcione: O cambias todo esos hipervínculos por las rutas correctas o a través de programación extraes la ruta del hipervínculo pero eso te obligaría a no usar "RowSource" para llenar el "ListBox" sino a programar con "List" o "AddItem" y además tampoco podrías usar los encabezados del "Listbox" .

Abraham Valencia

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas