MACRO FOTO EXCEL



  • MACRO FOTO EXCEL
    di Luca.lunica (utente non iscritto) data: 08/03/2016 15:19:28

    Buongiorno a tutti,

    innanzitutto grazie per il tempo che mi dedicherete in questa richiesta!
    Io ho assolutamente bisogno per il mio lavoro di trovare un modo per impostare un valore nella cella A contente il codice prodotto e far si che nella cella B esca la foto di quell'articolo, pescata da una cartella nella quale è nominata esattamente con CODICE.jpg
    premetto che uso mac e che non sono affatto esperto di macro, tuttavia so che è possibile fare questa funzione!!!
    aiutatemi!!!! :)

    Grazie mille



  • di patel data: 08/03/2016 15:24:51

    la prima cosa da fare è allegare un file di esempio




  • foto allegata!
    di luca.lunica (utente non iscritto) data: 08/03/2016 15:50:44

    ecco fatto! ho allegato una foto che spiega di cosa avrei bisogno, grazie mille!



  • di alfrimpa data: 08/03/2016 15:54:18

    Ciao Luca

    Patel (che saluto) ti aveva chiesto un file non una foto; con le immagini non si può far nulla e poi perché dovremmo costruire noi un file (per fare delle prove) quando tu ce l'hai già?

    Alfredo




  • eccolo!!!
    di luca.lunica (utente non iscritto) data: 08/03/2016 15:57:27

    scusatemi, non sono molto pratico! avete assolutamente ragione..
    tutto quello che posso fare lo aggiungo!!! non so da che parte iniziare ma questa cosa mi salverebbe la vita davvero!!!!!

    inserito il file



  • di alfrimpa data: 08/03/2016 16:02:52

    Ciao Luca

    Se le immagini non sono molte puoi inserirle nel file nel foglio2 e riallegare il file?

    Tempo fa ho fatto una cosa praticamente identica a questa e si tratterebbe solo di riadattare i riferimenti.

    Alfredo




  • le immagini!!!
    di luca.lunica (utente non iscritto) data: 08/03/2016 16:08:52

    le immagini sarebbero circa 600, diverse ogni 6 mesi! ahahahah
    ma se il metodo più facile è inserirle in un secondo foglio lo faccio!!!
    per ora ne ho inserite tre! tanto da capire come funziona, poi posso replicarlo su tutte le altre?

    sarebbe perfetto se pescasse dalla cartella ma come riesce meglio a voi!!!!


  • non posso caricare!
    di luca.lunica (utente non iscritto) data: 08/03/2016 16:11:07

    ahimè non mi fa caricare il file, troppo pesante!
    proviamo con solo quella foto lì e replico poi per tutte?



  • di alfrimpa data: 08/03/2016 16:12:35

    Ma non ho detto di caricare l'intero file bastano 4/5 foto.

    Ti ho allegato il file (InserimentoImmagini) di cui ti parlavo; da b3 a b13 basta che scrivi uno nome tra quelli che vedi sul foglio Immagini ed a sinistra comparirà la foto del nome scritto.

    Sotto vedi le macro che fanno questo.

    Magari riesci ad adattarlo alle tue esigenze

    Alfredo
     
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("B3:b13")) Is Nothing Then
        If Target.Rows.Count > 1 Then Exit Sub
        If Target.Value = "" Then
        Worksheets("Foglio1").Shapes(nomeimg).Delete
        Exit Sub
        End If
        Worksheets("Immagini").Shapes(Target.Value).Copy
        Target.Offset(0, -1).Select
        ActiveSheet.Paste
        Target.Select
    End If
    End Sub
    
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    nomeimg = ActiveCell.Value
    End Sub
    





  • ecco fatto!
    di luca.lunica (utente non iscritto) data: 08/03/2016 16:22:14

    ahahahaha ecco fatto!


  • domanda! ultima!!!
    di luca.lunica (utente non iscritto) data: 08/03/2016 16:26:02

    grazie mille!!!! davvero!!!

    un ultima domanda davvero sciocca forse!
    devo copiare e incollare il codice in nuova macro?

    esattamente come devo fare?



  • di alfrimpa data: 08/03/2016 16:26:09

    Ecco fatto cosa non vedo nulla.

    Se alleghi un nuovo file devi salvarlo con un nome diverso.

    Per quanto riguarda il prendere le foto da una cartella devo provare; per il momento mettine solo 4/5 sul foglio2.

    Alfredo




  • inserito e SCUSAMI!
    di luca.lunica (utente non iscritto) data: 08/03/2016 16:28:08

    davvero scusami non sono affatto pratico! inserita cartella di lavoro aggiornata!
    grazie infinite



  • di alfrimpa data: 08/03/2016 16:31:01

    Se non hai conoscenze di VBA è veramente complicato e lungo spiegare qui sul forum per chè le cose da dire sarebbero davvero tante.

    Se, invece, hai un po' di dimestichezza con le macro allora il discorso può essere diverso.

    Allega il file come ti ho detto e quando arriviamo al risultato finale, se vuoi, possiamo spiegare il tutto.

    Alfredo




  • FILE INSERITO!
    di luca.lunica (utente non iscritto) data: 08/03/2016 16:40:57

    il file dovrebbe inserito giusto ora! ti risulta?



  • di alfrimpa data: 08/03/2016 16:57:20

    Ora sono fuori; appena rientro controllo.

    Alfredo





  • di patel data: 08/03/2016 17:04:17

    non ha senso inserire 600 immagini, il file diventerebbe ingestibile, prova questa macro, valida se il file excel sta nella stessa cartella delle foto, altrimenti devi modificare la riga
    picPath = ThisWorkbook.Path & "" & Target.Value & ".jpg"

    la macro deve essere incollata nel modulo del foglio1 e funziona quando modifichi o inserisci un codice nella colonna A 
    allegato file foto.xlsm
     
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Picture As Object
    If Target.Column = 1 Then
      picPath = ThisWorkbook.Path & "" & Target.Value & ".jpg"
      ActiveSheet.Pictures.Insert(picPath).Select
      With Selection
       .Left = Target.Offset(0, 1).Left
       .Top = Target.Offset(0, 1).Top
       .ShapeRange.LockAspectRatio = msoFalse
       .ShapeRange.Height = Target.Offset(0, 1).RowHeight
       .ShapeRange.Width = Target.Offset(0, 1).Width
      End With
    End If
    End Sub





  • errore :(
    di luca.lunica (utente non iscritto) data: 08/03/2016 18:27:48

    Ciao! Grazie mille!
    mi da l'errore che vedi in allegato!

    che succede?



  • di patel data: 08/03/2016 18:38:40

    hai messo il file excel nella stessa cartella delle foto ? se sì prova a modificare la riga
    picPath = ThisWorkbook.Path & "" & Target.Value & ".jpg"

    con
    picPath = ThisWorkbook.Path & "/" & Target.Value & ".jpg"





  • quasi!
    di luca.lunica (utente non iscritto) data: 08/03/2016 18:49:04

    Grazie davvero, lo dirò ogni messaggio!
    ci siamo quasi! esce quello che vedi nell'ultima foto.... è tutto nella stessa cartella
    dopo la tua modifica è successo questo!



  • di patel data: 08/03/2016 18:51:04

    allega un'immagine del contenuto della cartella




  • caricato!
    di luca.lunica (utente non iscritto) data: 08/03/2016 18:54:41

    caricato!



  • di patel data: 08/03/2016 19:02:04

    scrivi correttamente il nome del file stando attento alle maiuscole ?
    io uso excel su windows e mi funziona bene





  • di luca.lunica (utente non iscritto) data: 08/03/2016 19:14:12

    Si scrivo tutto a parte l'estensione!
    corretto?

    dice che l'errore sta in questa riga:
    ActiveSheet.Pictures.Insert(picPath).Select



  • di luca.lunica (utente non iscritto) data: 08/03/2016 19:20:45

    Se l'immagine con l'errore la ricollego mi carica l'immagine giusta e le volte successive che inserisco quel codice funziona! non so cosa potrebbe essere l'errore!



  • di patel data: 08/03/2016 19:41:46

    prova questa 
     
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 1 Then
      picPath = ThisWorkbook.Path & "/" & Target.Value & ".jpg"
       aleft = Target.Offset(0, 1).Left
       atop = Target.Offset(0, 1).Top
       h = Target.Offset(0, 1).RowHeight
       w = Target.Offset(0, 1).Width
       Application.ActiveSheet.Shapes.AddPicture picPath, False, True, aleft, atop, w, h
    End If
    End Sub





  • FUNZIONA!!!
    di luca.lunica (utente non iscritto) data: 08/03/2016 19:45:26

    Ho riavviato il computer e ora la prima funziona!
    non so come sia possibile!

    una domanda: c'è un modo di associarla ad un tasto e far si che cliccando su quel pulsante applichi questa macro a una colonna di prodotti già esistente??

    prece se copio e incollo su questo foglio una lista di 140 celle non inserisce le immagini.. inserisce solo se ne copio uno alla volta di codice!



  • di patel data: 09/03/2016 08:49:57

    quante sono le colonne e le righe che utilizzi ? mi occorre un file realistico.
    quando alleghi un file scrivine il nome nel messaggio




  • DOMANDA PER PERFEZIONARE
    di luca.lunica (utente non iscritto) data: 10/03/2016 16:07:34

    Ciao!
    ho caricato il file che si chiama "inserimento immagini funzionante.xls"
    funziona tutto e va benissimo, solo avrei bisogno di due perfezionamenti.

    vorrei:

    1) che le foto si inserissero tutte insieme quando clicco un pulsante e non ogni volta che cambio valore in una cella della colonna A

    2) che se nella colonna A inserisco un elenco di 200 codici e clicco il pulsante della richiesta 1 comparissero le foto a lato, ora compaiono una alla volta quando inserisco il codice!

    se riuscissimo fare queste due piccole modifiche sarei davvero felicissimo e il file diventerebbe perfetto!!

    si può?

    Grazie mille!!! siete dei salvatori!



  • di patel data: 10/03/2016 17:25:27

    elimina dal modulo del foglio1 la macro già esistente ed inserisci in un modulo standard la seguente, poi colllegala ad un pulsante -

    vedi file inserimentopatel
     
    Sub inserisci()
    riga = 3
    Do While Cells(riga, 1) <> ""
      picPath = ThisWorkbook.Path & "" & Cells(riga, 1).Value & ".jpg"
       aleft = Cells(riga, 2).Left
       atop = Cells(riga, 2).Top
       h = Cells(riga, 2).RowHeight
       w = Cells(riga, 2).Width
       Application.ActiveSheet.Shapes.AddPicture picPath, False, True, aleft, atop, w, h
       riga = riga + 1
    Loop
    End Sub
    






  • di luca.lunica (utente non iscritto) data: 10/03/2016 17:39:19


    ora vedo il pulsante ma mi da errore su questa riga e di conseguenza non mette immagini!
    Application.ActiveSheet.Shapes.AddPicture picPath, False, True, aleft, atop, w, h

    cosa può essere?



  • di patel data: 10/03/2016 19:19:29

    come al solito io ho usato la perché uso windows, tu invece devi usare /