Creare un immagine Active X che varia a seconda delle cella Selezionata.

Versione Completa   Stampa   Cerca   Utenti   Iscriviti     Condividi : FacebookTwitter
marco.benedetti
00mercoledì 8 marzo 2017 12:16
Buongiorno,
ho letto diverse discussioni sulle varie importazioni d'immagini e devo dire che sono veramente ganze.
Ora l'idea che mi sono fatto é:
Ho un foglio di lavoro con diversi codici ~400 se inserisco l'immagine per ogni codice...temo diventi tutto troppo pesante.

Vorrei creare una finestra in un certo punto del foglio che visualizza l'immagine (preso atto che tutte le immagini siano .jpg, si chiamino esattamente come il codice selezionato e situate in una postazione specifica es. c:\foto ) della cella selezionata.
Alla fine sarebbe come l'anteprima di Windows.


Io creerei un nuovo Modulo immagine e la piazzerei dove voglio...però non so cosa scrivere per digli di puntare al file chiamato "cella selezionata"+.jpg nella famosa cartella foto.

Ho una mente un po intrigata...spero riusciate a capire cosa volevo dire.

Grazie mille...siete Fortissimi.
alfrimpa
00mercoledì 8 marzo 2017 12:41
Ciao Marco

Potresti provare con una macro di questo tipo

vb
Sub InserisciImg()
Dim myPath As String
myPath = "c:\foto\"  
Worksheets("Foglio1").Image1.Picture = LoadPicture(myPath & Range("a1").Value & ".jpg")
End Sub


Comunque se alleghi un file di esempio si può essere più precisi.
marco.benedetti
00mercoledì 8 marzo 2017 13:47
Praticamente vorrei che premendo in una qualsiasi delle celle colonna "A" mi compare nel riquadro apposito la foto associata (che è presente nella cartellina con il solito nome es. a.jpg b.jpg etc).

La macro che mi hai scritto se non la interpreto male legge la cella A1, ma io vorrei che fosse una funzione dinamica, cioè premendo o scorrendo la colonna A.. io mi vedo l'immagine associata.

Grazie mille per l'aiuto!!! [SM=x423017]
alfrimpa
00mercoledì 8 marzo 2017 14:15
Prova con questa macro da inserire nel modulo di classe del foglio interessato

vb
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ur As Long
Dim myPath As String
myPath = "c:\foto\"
ur = Cells(Rows.Count, 1).End(xlUp).Row
If Not Intersect(Target, Range("a1:a" & ur)) Is Nothing Then
    Worksheets("Foglio1").Image1.Picture = LoadPicture(myPath & Target.Value & ".jpg")
End If
End Sub


Ti allego il file
marco.benedetti
00mercoledì 8 marzo 2017 14:25
Re:
alfrimpa, 08/03/2017 14.15:

Prova con questa macro da inserire nel modulo di classe del foglio interessato

vb
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ur As Long
Dim myPath As String
myPath = "c:\foto\"
ur = Cells(Rows.Count, 1).End(xlUp).Row
If Not Intersect(Target, Range("a1:a" & ur)) Is Nothing Then
    Worksheets("Foglio1").Image1.Picture = LoadPicture(myPath & Target.Value & ".jpg")
End If
End Sub


Ti allego il file



Poco da dire... [SM=x423047] ...è esattamente quello che cercavo.
Ora proverò ad inserirlo nel mio foglio.!!!
Grazie infinite.
[SM=x423028] [SM=x423030]
marco.benedetti
00mercoledì 8 marzo 2017 14:29
A questo punto per approfittarmene :P ... quando non trova l'immagine corrispondente da errore.
Aggiungerei che se non trova l'immagine o non selezioni nulla punta ad una immagine fissa "Es. workinprogess.jpg ".
Ancora grazie infinite.
alfrimpa
00mercoledì 8 marzo 2017 15:32
Prova così

vb
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ur As Long
Dim myPath As String
myPath = "c:\foto\"
ur = Cells(Rows.Count, 1).End(xlUp).Row
If Not Intersect(Target, Range("a1:a" & ur)) Is Nothing Then
    If Len(Dir(myPath & Target.Value & ".jpg")) = 0 Then
        Worksheets("Foglio1").Image1.Picture = LoadPicture(myPath & "workinprogess.jpg")
        Else
        Worksheets("Foglio1").Image1.Picture = LoadPicture(myPath & Target.Value & ".jpg")
    End If
End If
End Sub
marco.benedetti
00mercoledì 8 marzo 2017 15:38
Funziona :P !!!

Estrapolando da altre letture avevo risolto così:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ur As Long
Dim myPath As String
myPath = "c:\Foto\"
ur = Cells(Rows.Count, 1).End(xlUp).Row
If Not Intersect(Target, Range("a1:a" & ur)) Is Nothing Then
If Dir(myPath & Target.Value & ".jpg") <> "" Then ' se la foto esiste
Worksheets("Foglio1").Image1.Picture = LoadPicture(myPath & Target.Value & ".jpg")
Else
Worksheets("Foglio1").Image1.Picture = LoadPicture(myPath & "workinprogress.jpg")
End If
End If

End Sub



Alla fine è la stessa soluzione :P !!!
[SM=x423047] [SM=x423047] [SM=x423047]
Grazie per il supporto...assolutamente fondamentale!!.
alfrimpa
00mercoledì 8 marzo 2017 15:48
Si

vb
If Dir(myPath & Target.Value & ".jpg") <> "" Then 


e

vb
If Len(Dir(myPath & Target.Value & ".jpg")) = 0 Then


sono la stessa cosa.
Questa è la versione 'lo-fi' del Forum Per visualizzare la versione completa clicca qui
Tutti gli orari sono GMT+01:00. Adesso sono le 22:26.
Copyright © 2000-2024 FFZ srl - www.freeforumzone.com