ASSEGNARE IMMAGINE A USERFORM



  • ASSEGNARE IMMAGINE A USERFORM
    di RITA (utente non iscritto) data: 05/02/2013 12:07:48

    Ciao a tutti, piu' che un problema mi sono incaponita con una cosa
    ossia in una userform ho precaricato la casellina immagine
    ora con l'istruzione qui sotto riesco a rendere come immagine una zona del foglio excel, individuo il nome
    ma non so come poterla inserire nella casellina immagine della userform
    ho visto nell'aiuto in linea che dovrei utilizzare loadpicture ma si presuppone che abbia un percorso e un immagine salvata.
    qualcuno puo' dirmi se si puo' fare e in quale modo.
    Grazie



     
    'COPIO L'IMMAGINE IN M1
    Range("A1:A6").CopyPicture xlScreen, xlBitmap
    Range("M1").PasteSpecial
    X = Sheets("PROVA").Shapes.Count
    If X <> 0 Then
    For I = 1 To X
    Y = Sheets("PROVA").Shapes(I).Name
    Next I
    End If
    'QUI NON RIESCO
    UserForm1.Image1.Picture =  .........
    



  • di Vecchio Frac data: 05/02/2013 12:15:58

    Si usa così:
    Set UserForm1.Image1.Picture = LoadPicture("percorso completo e nome del file.jpg")





  • di Rita (utente non iscritto) data: 05/02/2013 17:10:31

    Ok ma il problema è che l immagine la creo al momento tramite vba e quindi non ho nessun percorso da caricare e nessuna foto salvata
    È solo un immagine che raffigura una zona del foglio Excel e che volevo mi comparisse nella userform nella casellina immagine



  • di Vecchio Frac data: 05/02/2013 22:52:05

    C'eri quasi... dopo aver copiato in memoria l'immagine ti manca un metodo per incollarla nel controllo immagine dello userform.
    E' complicatino da fare ma si può fare.
    Stephen Bullen, nel 1998, ha prodotto il file di esempio che allego.
    C'è tutta la routine PastePicture che ti serve, devi solo adattarla al tuo contesto.
    Non sarà una passeggiata perchè ti devi studiare come viene usato il codice originale per capire come reimplementarlo. Ma ce la puoi fare ^_^

    p.s. tutto quel
    For I = 1 To X
    Y = Sheets("PROVA").Shapes(I).Name
    Next I
    è inutile... alla fine Y avrà solo il nome dell'ultima Shape del foglio e poi non ti servirà a niente saperlo, perchè non ci fai niente nel resto del codice :)





  • di HarryBosch data: 06/02/2013 00:33:07

    O.T.
    Ho sempre trovato dell'ottimo materiale da Stephen ^_^
    E niente male anche questa Picture




  • di RITA (utente non iscritto) data: 06/02/2013 15:20:06

    Grazie vecchiofrac
    dando un'occhiata al file ho estrapolato quello che mi serviva ed ho risolto
    ossia copio una zona del foglio excel come immagine
    salvo l'immagine
    la carico nella casellina nella userform e poi cancello l'immagine salvata
    grazie di cuore

     
    sub salva ()
    Dim vFile As Variant, sFilter As String, lPicType As Long, oPic As IPictureDisp
    vFile = "C:1.BMP"
    If vFile <> False Then
    lPicType = IIf(obMetafile, xlPicture, xlBitmap)
    Worksheets(1).Range("A1:H26").CopyPicture xlScreen, xlBitmap
    Set oPic = PastePicture(lPicType)
    SavePicture oPic, vFile
    End If
    Image1.Picture = LoadPicture(vFile)
    Kill vFile
    end sub
    



  • di Vecchio Frac data: 06/02/2013 18:02:02

    Bene! Allora puoi marcare "Spunta se risolta" in una nuova risposta ^_^





  • di Rita (utente non iscritto) data: 06/02/2013 20:25:35

    .