Inserire una foto in excel
Hai un problema con Excel? 
Inserire una foto in excel
di Rino (utente non iscritto) data: 11/08/2012 11:06:05
Buongiorno rieccomi di nuovo a chiedere aiuto, questa volta avrei bisogno di inserire delle foto ad ogni prodotto.
Adesso mi spiego meglio go un archivio in excel formato da tot prodotti diciamo 10 per ogni prodotto mi richiamo una scheda in cui ci sono tutte le caratteristiche e descrizione, a questo punto vorrei che si visualizzasse anche la relativa foto (sia manualmente cioè premendo un pulsante o meglio ancora in automatico).
C'è qualcuno che ha risolto in qualche maniera questo problema.
Ringrazio anticipatamente
Rino
Attributo visible su evento mouse
di Michele Noventa (utente non iscritto) data: 11/08/2012 11:34:15
Da quello che ho sentito vuoi visualizzare un oggetto al passaggio del mouse.
Il modo più facile è quello di inserire gli oggetti immagine direttamente sul foglio excel che ti interessa ed impostare l'attributo VISIBLE su false.
A questo punto crei una macro associata al testo che ti interessa e dici.
in questo modo al passaggio del mouse sulla casella compare il disegno che ti interessa.
Ti consiglio di inserire anche una condizione del tipo: inserisci il nome dell'oggetto che compare nella cella.
spero di essere stato chiaro.
Private Sub oggetto_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
if(nome_oggetto = activecells.value) then
oggetto.visibile = true
end if
End Sub |
di Vecchio Frac data: 11/08/2012 15:19:41
Non utilizzerei Excel per un gestionale di prodotti, ma se questo è lo scenario eviterei di caricare tutte le foto nel foglio, il file diventerebbe molto grande inutilmente.
Potrei consigliare una soluzione del genere: foglio dei dati dove un link ipertestuale rinvia a un foglio di dettaglio; qui un controllo immagine si preoccupa di caricare al volo l'immagine residente su disco.
Michele, non ho capito bene su quale oggetto vuoi intercettare il MouseMove e in che modo il nome di questo oggetto viene recuperato.
Rino, siccome non stai partendo da zero, illustra in che situazione esattamente ti trovi (e magari anche la versione di Excel :) ), visto che non "C'è qualcuno che ha risolto in qualche maniera questo problema. ", dato che nessuno ha "questo" problema ^_^
di HarryBosch data: 11/08/2012 19:09:25
Ciao Ragazzi...
in effetti anch'io sconsiglio di caricare le foto sul foglio; una soluzione alternativa potrebbe essere quella di creare form e, in base all'articolo inserito, far apparire ovviamente tutte le relative caratteristiche del prodotto e la relativa foto: quest'ultima, anzi, tutte le foto, risiedono sulla memoria del pc e possono venir vengono richiamate con un comando del tipo che riporto sotto.
Da far comparire nell'oggetto Immagine degli strumenti a disposizione del form. Ovvero, ogni foto avrà il suo numero (o nome) che verrà associato al numero (o nome) del foglio riassuntivo di Excel. Si metteranno tutte le foto nella stessa cartella in modo da avere sempre lo stesso percorso. E si potrebbe mettere anche una immagine di "non disponibile" da caricare ogni volta che il prodotto risulta senza la relativa immagine.
Non so se a parole mi sono fatto capire, magari vedo di preparare un piccolo esempio da postare. Nel frattempo vediamo un pò cosa dice Rino
imgmagazzino.Picture = LoadPicture(Percorso & NumImmagine)
|
di Rino (utente non iscritto) data: 11/08/2012 20:47:50
Ciao prima di tutto grazie per il tempo che mi state dedicando, ritornando al quesito uso excel 10.
anch'io sono del parere di non caricare le foto sul file ma di fargli leggere la foto abbinata ad ogni ID.
Rino
di HarryBosch data: 12/08/2012 10:11:05
Ho riletto quello che ho scritto e mi sono accorto di aver pasticciato parecchio!
Scusate, ero un pò di fretta...
Hei, non è che adesso Rino mi passa ad Access, vero? :)
Ho preparato un piccolo esempio di come sfruttare una userform che va a pescare l'immagine di un prodotto inserita in una cartella specifica.
Si tratta di un allegato rar in quanto ho messo dentro anche una cartellina con qualche immagine di esempio.
Prima di testarlo bisogna però intervenire sul codice andando a modificare il percorso relativo alla cartella "immagini_magazzino".
Quindi, basta cambiare la "Const Percorso" in base alla directory del proprio pc.
Se non riuscite a scaricarlo lo reinserisco domani.
Ciao, Vanni
Mi piacerebbe anche ragionare sulla proposta di Michele, sempre se è d'accordo, e se ci illustra qualche passaggio aggiuntivo.
Elenco dati su foglio1 e selezione dati su foglio2
di Michele Noventa (utente non iscritto) data: 12/08/2012 11:58:49
Ciao a tutti,
l'idea del collegamento ipertestuale è buona ma se vengono modificati i collegamenti si rischia di perdere l'informazione.
Io troverei più sicuro mettere su un foglio2 le foto che interessano, chiamarle come "foto1", "foto2" e così via, mettendo l'attributo visibile su false.
Poi mettere sul foglio in cui si vogliono visualizzare le informazioni il codice vba e con il codice che ho inserito e impostare l'attributo su visibile ogni volta che activecell = foglio2.foto1.
Così almeno non si perde la sorgente delle informazioni e si continua ad aggiornarlo a seconda delle necessità.
Non credo che si appesantisca il file di excel.
di Vecchio Frac data: 12/08/2012 14:02:45
@Vanni, non hai allegato niente, riprova :o)
@Michele, con Excel l'unica strada praticabile è quella del collegamento esterno. Importare delle foto vuol dire ingigantire il file di Excel (non credo che Rino voglia foto di 10x10 pixel): forzarne la visbilità a False non significa che ne riduci la dimensione a zero... Hai ragione nell'intuire che i file delle foto devono per forza risiedere su un percorso sempre sicuro e fisso, ad esempio una cartella di rete predefinita, per non perdere il link.
"Poi mettere sul foglio in cui si vogliono visualizzare le informazioni il codice vba e con il codice che ho inserito e impostare l'attributo su visibile ogni volta che activecell = foglio2.foto1"
Sul codice che hai proposto, così isolato da un contesto reale, non ne capisco il senso e ripeto la domanda: qual è l'oggetto sul quale intercetti il passaggio del mouse? la cella attiva? ma non funziona così. E cosa significa quel contenuto della cella attiva = foglio2.foto1? è un semplice testo? è un hyperlink?
Se volete continuare a usare Excel (e non credo che sia la soluzione migliore), una strada praticabile è quella di Vanni: userform per inserimento dati e recupero delle informazioni con foglio dati di appoggio che punta ad una cartella di file imamgine da mostrare (o nella stessa userform o in un foglio separato, di dettaglio del prodotto). Io non userei nemmeno la userform, ma è comunque un suggerimento da considerare.
di Rino (utente non iscritto) data: 12/08/2012 20:45:14
Buonasera a tutti,
no non voglio passare ad access anche se lo uso per altre cose, il fatto è che il file in excel già esiste e mi hanno chiesto di modificarlo con le foto.
Ciao e grazie ancora
Inserire foto nel foglio2
di Michele Noventa (utente non iscritto) data: 12/08/2012 21:03:40
Immaginavo che si trattasse di un file da modificare perchè mi ricorda molto un progetto che ho fatto quando ero tirocinante presso un'azienda che vendeva prestazioni mediche e voleva sottoporre un catalogo di offerta ai propri clienti.
Opterei quindi per inserire le foto nel foglio2, nominare gli oggetti con "foto1", "foto2" etc, metterle con attributo visible = false, e poi dire che ogni volta che activecell = foglio1.foto1 allora foto1.visible = true.
di HarryBosch data: 12/08/2012 21:14:40
Che strano! Non si vede il mio allegato? Sul mio pc risulta caricato e disponibile per il download.. provo a ricaricarlo.
In effetti quella del form che mostra le informazioni era una possibile idea di come gestire la visualizzazione del prodotto e della relativa immagine.
Ma si potrebbe anche creare un collegamento che apre un altro foglio, o un bottone per ogni prodotto che apre l'immagine stessa... insomma, le possibilità sono molte.
Dipende un pò da quello che si vuole ottenere.
Il rar che ho ricaricato si chiama "form con foto - bis"
Ciao, Vanni
di Rino (utente non iscritto) data: 12/08/2012 21:21:32
Cari amici forse ho trovato la soluzione, dopo aver costruito la scheda che comprende tutti i dati anagrafici della persona per cui anche il nominativo, inserisco un controllo ActiveX per l'immagine.
Sotto ad esso metto un pulsante collegato a una macro che vi posto che serve a far visualizzare la foto se serve.
nel foglio3 nella cella C5 inserisco il nominativo.
La macro non fa altro che assegnare alla variabile NomeFoto il contenuto della cella in cui c’è il nominativo la directory dove risiedono le foto per adesso ho pensato di metterle dove sta il file stesso.
L’ho testato pare che funzioni, potete darmi un Vs. parere.
per le foto ho usato le prime che ho trovato sottomano.
Grazie Rino
Sub logo()
On Error GoTo 10:
NomeFoto = Cells(5, 3)
Sheets(3).Image1.Picture = LoadPicture(ThisWorkbook.Path & "" & NomeFoto & ".gif")
Exit Sub
10: MsgBox "Immagine logo non trovata"
End Sub
|
di Vecchio Frac data: 12/08/2012 21:57:48
@Vanni: adesso vedo gli allegati (doppi, LOL, ma sarà perchè ho gli occhiali ^_^)... devo ancora aprirne uno, poi ti dico!
@Michele: l'esperienza conta molto, soprattutto se si tratta di riciclare ^_^ Ho capito adesso cosa volevi dire, ma MouseMove non è l'evento da considerare, bensì Worksheet_Change con target sulla cella dove risiede il nome al quale associare la foto del prodotto. Ho già esposto le mie perplessità su una soluzione del genere :)
@Rino: carichi al volo il file immagine in un controllo Immagine per il quale potresti benissimo impostare le proprietà a Linked e non Embedded, ma può andar bene ugualmente, se ne carichi una alla volta :)
Evita per cortesia i numeri come riferimenti di etichetta... son così brutti, sanno di Basic di vent'anni fa ^_^
di Rino (utente non iscritto) data: 12/08/2012 23:40:51
Be forse perchè li usavo circa 30 anni fa
Rino
di Vecchio Frac (utente non iscritto) data: 13/08/2012 09:08:22
Giusto Rino, ormai sono trent'anni anche per me :)
Comunque non fidarti a testare l'assenza del file in quel modo, primo perché potrebbe scatenarsi un errore di tipo diverso e il messaggio diventa fuori luogo, secondo perché è più produttivo gestire il caso prima che possa verificarsi. Per controllare se un file esiste puoi utilizzare il metodo basilare con Dir() o meglio FileSystemObject.
'con Dir()
If Dir(myPath & "" & myFilename) Then ...
'con FileSystemObject
'in un Modulo
Public Function FSOFileExists(ByVal f As String) As Boolean
FSOFileExists = CreateObject("Scripting.FileSystemObject").FileExists(f)
End Function
Public Function FSOFolderExists(ByVal f As String) As Boolean
FSOFolderExists = CreateObject("Scripting.FileSystemObject").FolderExists(f)
End Function
'nel codice
If FSOFolderExists(myFolder) Then ...
If FSOFileExists(myFile) Then ... |
di Vecchio Frac data: 13/08/2012 09:48:14
Vanni, ho visto il modellino, anche se con qualche limitazione perché io ho Excel 2003 e quindi l'xlsm me lo apre con limitazioni.
Un lavoretto carino, l'approccio è quello giusto, hai utilizzato anche tu Dir(). Graziose le immagini dei prodotti ;)
Attenzione ai percorsi assoluti.
Ovviamente come dico sempre tutto è migliorabile ma dipende anche dalle esigenze dell'utente finale.
Un'altra idea è che si potrebbe inserire l'elenco dei prodotti in un menu a tendina per non costringere l'utente a digitare un codice che magari non ricorda.
Si dovrebbe separare la form di inserimento dati da quella di ricerca e consultazione (oppure come prospettato da Michele si potrebbe incorporare tutto nel foglio Excel, caselle immagine comprese, dedicando ai diversi scopi un foglio separato).
dove sono gli allegati?
di Luca.Donati (utente non iscritto) data: 06/09/2012 16:23:55
Salve a tutti. Questa discussione è di fondamentale importanza anche per me.
Ma non vedo gli allegati: dove sono?
In un'altra discussione li ho visti bene, in un'icona in alto a destra della pagina (poco intuitivo, a dire il vero...), ma qui proprio non ci sono
Grazie in anticipo!
di HarryBosch data: 06/09/2012 16:56:28
Ciao Luca
gli allegati rimangono solo per un breve periodo, per quello non li vedi.
Uno degli allegati era mio, se ti interesso lo posto.
Cosa volevi realizzare in particolare?
Vanni
di Luca.Donati data: 07/09/2012 14:58:36
Ciao, HarryBosch, grazie dell'interessamento.
Il mio è un vecchio progetto (saranno 5-6 anni che ci sto dietro): un programma di genealogia, articolato principalmente in un foglio “individui”, che contiene i dati delle persone, un altro “unioni” che dettaglia matrimoni e unioni libere e di varia natura. Altri fogli mi permettono di elaborare i dati in un vero grafico genealogico: l’albero ascendente classico, quello più articolato di tutte le parentele (discendente), un altro in cui posso vedere le info di ogni individuo organizzate in modo più gradevole che nella base dati generale. Non vorrei allegare questo file per molti motivi.
Il dettaglio riguardante le foto è per me una curiosità che potrebbe diventare utilissima.
Infatti visualizzo le singole schede personali, per ora in un foglio dedicato, ma potrei finire per fare una userbox. In ogni caso, un angoletto della scheda lo vorrei dedicare agli eventuali documenti presenti nel disco, riguardanti la persona ed ho un paio di ipotesi: 1) visualizzo l’indirizzo di una cartella piena di roba che riguarda la persona in questione (in pdf, in word o addirittura film, e allora sarà solo un link); 2) ho solo un documento (p.es. una foto) ed in questo caso sarebbe carino vederne l’anteprima nella scheda.
Ecco, penso di aver detto l’essenziale. Per ora mi basta vedere il lavoro che avete fatto per ispirarmi.
Grazie ancora e a presto!
di HarryBosch data: 07/09/2012 15:52:02
facciamo così:
nel frattempo ti allego nuovamente il file che avevo postato. Ricordati che inizialmente devi modificare il percorso della cartella "immagini_magazzino" che sul tuo pc sarà simile ma diverso dal mio che ho inserito nel codice.
Poi, per ulteriori chiarimenti o per impostare comunque qualcosa di nuovo ti consiglio di aprire un nuovo thread e postare il problema; questo ormai è chiuso anche se Rino non l'ha più spuntato..
di Luca.Donati (utente non iscritto) data: 07/09/2012 16:01:29
Grazie, HarryBosh. File prelevato. Appena riesco a farmi mettere WinRar su questo pc me lo apro e lo guardo.
A presto.
di Vecchio Frac data: 07/09/2012 16:06:39
Perché non aprite un thread nuovo, visto che il richiedente è diverso, l'argomento è diverso e sicuramente le soluzioni sono diverse?
di Luca.Donati (utente non iscritto) data: 07/09/2012 16:10:34
Perché per ora non c'è stato ancora bisogno.
Da un punto di vista strettamente tecnico la questione è la stessa (visualizzare una foto in Excel), e la mia intenzione era semplicemente di ispirarmi ad un lavoro già fatto.
Ma da adesso in poi, hai ragione. Non appena avrò esaminato il file ed elaborato un codice personalizzato per me, inizierò una nuova discussione. Ciao.
di Vecchio Frac data: 07/09/2012 16:18:01
Ho trasformato il file rar in zip per tua comodità.
Ricordate che egli allegati vengono rimossi dopo tre giorni dal caricamento.
di Luca.Donati data: 07/09/2012 16:48:28
Sei un angelo, Veccio Frac!
Prelevato anche quello; lunedì lo apro.
di Vecchio Frac data: 07/09/2012 20:59:04
Se fossi un angelo, sarei biondo e con gli occhi azzurri.
Inoltre non mi chiamo nemmeno Angelo, ma Francesco.
Vedi un po' tu ^_^
E una volta prelevato il file non potevi aprirlo? non ti senti roso dalla curiosità? :D
di Luca.Donati data: 10/09/2012 12:17:21
Niente ali, niente aureola.... Pfff, che delusione!
Effettivamente, ho aspettato oggi per aprirlo perché il mio lavoro è un altro e la curiosità rodente deve cedere il passo ad una famiglia da nutrire che mi aspetta la sera, ma adesso l'ho aperto ed è proprio carino!
Complimenti. Mi ci ispirerò senz'altro per l'albero genealogico e come promesso farò di altre eventuali richieste un nuovo post.
Grazie di tutto, ciao!
Vuoi Approfondire?