Stellar Blade Un'esclusiva PS5 che sta facendo discutere per l'eccessiva bellezza della protagonista. Vieni a parlarne su Award & Oscar!

Excel Forum Per condividere esperienze su Microsoft Excel

form visualizzazione grafici

  • Messaggi
  • OFFLINE
    Gio.Cas
    Post: 19
    Registrato il: 22/07/2016
    Città: TORINO
    Età: 67
    Utente Junior
    2016
    00 03/11/2021 23:16
    Ciao, ho un problema con un form di visualizzazione grafici.
    Quando apro il file e lancio il form “myform” mi compare il messaggio : Errore di run-time ‘481’: Immagine non valida, schiacciando su debug, mi evidenzia la riga:
    << Me.Image1.Picture = LoadPicture(VBA.Environ("TEMP") & Application.PathSeparator & "Grafico.jpg") >>
    se cambio la disposizione dei grafici nel foglio “Grafici” lancio il form “myform” seleziono 1 per volta i grafici nella combobox e tutto funziona, a questo punto salvo e chiudo il file.
    Quando riapro nuovamente il file, appena lancio il form “myform” mi compare nuovamente il messaggio : Errore di run-time ‘481’: Immagine non valida, dando ok su debug, mi evidenzia la riga:
    << Me.Image1.Picture = LoadPicture(VBA.Environ("TEMP") & Application.PathSeparator & "Grafico.jpg") >>
    Come posso risolvere?
    Grazie per l’aiuto
    GioCas
  • OFFLINE
    Marius44
    Post: 955
    Registrato il: 24/06/2015
    Città: CATANIA
    Età: 80
    Utente Senior
    Excel2019
    10 04/11/2021 05:53
    Ciao

    Aprendo il file e lanciando l'UF a me funziona regolarmente.
    Per una maggiore snellezza inserisci un pulsante nel Foglio che apra la UserForm

    Ciao,
    Mario
  • OFFLINE
    Gio.Cas
    Post: 19
    Registrato il: 22/07/2016
    Città: TORINO
    Età: 67
    Utente Junior
    2016
    00 04/11/2021 12:52
    form visualizzazione grafici
    Ciao Marius 44, ciao, ho seguito il tuo consiglio ma il risultato è il medesimo, tu hai provato a aprire e lanciare la UF, poi chiudere completamente il file, riaprire excel e rilanciare la UF.
    Intanto in rete ho trovato degli esempi più o meno simili, li ho adattati al mio ma anche con questi nuovi sistemi il risultato è il medesimo, però gestiscono tutti max 3 grafici. Non vorrei che fosse un problema generato dal file temporaneo.
    Continuo a provare e spero in un aiuto.
    GioCas 😉
  • OFFLINE
    by sal
    Post: 6.571
    Registrato il: 14/11/2004
    Utente Master
    Office 2019
    10 04/11/2021 16:03
    Ciao, ho fatto le prove ed in effetti si blocca, perche non riesce a creare l'immagine del grafico, a volte funziona ed altre volte no.

    secondo me dovresti prima selezionare il grafico e poi creare l'immagine.

    in rete ho trovato questo codice che crea l'immagine del grafico selezionato, vedi se può esserti utile.

    Sub ExportChart()
    Const sSlash$ = "/"
    Const sPicType$ = ".gif"
    Dim sChartName$
    Dim sPath$
    Dim sBook$
    Dim objChart As ChartObject
    On Error Resume Next
    Set objChart = ActiveSheet.ChartObjects(1)
    If objChart Is Nothing Then
    MsgBox "No charts have been detected on this sheet", 0
    Exit Sub
    End If
    If ActiveChart Is Nothing Then
    MsgBox "You must select a single chart for exporting ", 0
    Exit Sub
    End If
    Start:
    sChartName = Application.InputBox("Please Specify a name for the exported chart" & vbCr & _
    "There is no default name available" & vbCr & _
    "The chart will be saved in the same folder as this file", "Chart Export", "")
    If sChartName = Empty Then
    MsgBox "You have not entered a name for this chart", , "Invalid Entry"
    GoTo Start
    End If
    If sChartName = "False" Then
    Exit Sub
    End If
    sBook = ActiveWorkbook.Path
    sPath = sBook & sSlash & sChartName & sPicType
    ActiveChart.Export Filename:=sPath, FilterName:="GIF"
    End Sub


    vedi se riesci altrimenti tento io di aggiustarti la macro.

    però pensandoci bene invece della casella di riepilogo(ComboBox) potresti usare gli OptionButton nel form per selezionare i 6 grafici, se sono solamente 6, ed inserire nella Caption il nome del grafico.

    Ciao By Sal (8-D

    [Modificato da by sal 04/11/2021 16:09]
    se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
  • OFFLINE
    Gio.Cas
    Post: 20
    Registrato il: 22/07/2016
    Città: TORINO
    Età: 67
    Utente Junior
    2016
    00 04/11/2021 18:45
    form visualizzazione grafici
    Grazie bySal, ho provato il codice che hai postato ma non mi funziona. Se puoi ti chiedo ancora un'aiuto.
    Utilizzo la combobox perchè viene utilizzato su un programma azionario ed interessa magari visualizzare solo un grafico spacifico.
    In una scheda sono 6 i grafici da visualizzare, mentre in un altra 13.
    Come sempre grazie.
    GioCas
  • OFFLINE
    by sal
    Post: 6.572
    Registrato il: 14/11/2004
    Utente Master
    Office 2019
    10 05/11/2021 08:29
    Ciao Gio.Cas, era come ti dicevo, nella tua macro non selezionavi il grafico prima di creare l'immagine per inserirla nel form, e quindi non selezionato, a volte non creava l'immagine in quanto TMP era vuoto.

    ti ho modificato la macro, ho aggiunto una sola riga per selezionare prima il grafico, la vedi nel codice VBA.

    Private Sub Cambia_Grafico()
    
    Dim Grafico As Chart
    Dim sh As Worksheet
    
    Set sh = ThisWorkbook.Sheets("Grafici")
    sh.Shapes(Me.ComboBox1.Value).Select '<----------------------- Riga aggiunta
    Set Grafico = sh.Shapes(Me.ComboBox1.Value).Chart
    Grafico.Export VBA.Environ("TEMP") & Application.PathSeparator & "Grafico.jpg"
    Me.Image1.Picture = LoadPicture(VBA.Environ("TEMP") & Application.PathSeparator & "Grafico.jpg")
    
    End Sub
    


    ho fatto diverse prove e non si è bloccato, ti allego il file

    Ciao By Sal (8-D
    [Modificato da by sal 05/11/2021 08:34]
    se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
  • OFFLINE
    Marius44
    Post: 956
    Registrato il: 24/06/2015
    Città: CATANIA
    Età: 80
    Utente Senior
    Excel2019
    10 05/11/2021 11:51
    Salve a tutti

    @by Sal - Ottimo lavoro

    Vorrei suggerire un'altra possibilità.
    Nel Foglio1 (quello coi dati, ma si potrebbe fare anche in un altro foglio) ho aggiunto i 6 grafici da rappresentare; prima quello con tutte le serie e poi quello con solo la serie1, la serie2 ecc.
    Quindi una convalida dati (invece del combo) nella cella I3 a cui fa riferimento questo codice
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("I3")) Is Nothing Then
      Select Case Target
        Case "tutti"
          cht = 1
        Case "serie1"
          cht = 2
        Case "serie2"
          cht = 3
        Case "serie3"
          cht = 4
        Case "serie4"
          cht = 5
        Case "serie5"
          cht = 6
      End Select
      With ActiveSheet
        For i = 1 To 6
          .ChartObjects(i).Visible = False
        Next i
        .ChartObjects(cht).Visible = True
      End With
    End If
    End Sub
    

    Prova e vedi se ti viene più semplice.
    Ciao,
    Mario
  • OFFLINE
    Gio.Cas
    Post: 21
    Registrato il: 22/07/2016
    Città: TORINO
    Età: 67
    Utente Junior
    2016
    00 05/11/2021 18:41
    form visualizzazione grafici
    Ciao BySal,
    per prima cosa grazie, ho provato le due soluzioni, quella dove hai aggiunto la riga mi funziona bene, mentre la seconda soluzione (tutte e due le soluzioni suggerite), mi si bloccano dopo 3 selezioni. non riesco a capire. Continuo a provare. Comunque come ti ho scritto sopra la prima soluzione mi permette di andare avanti.
    Ti tengo aggiornato.
    Grazie
    GioCas [SM=g27811]
  • OFFLINE
    by sal
    Post: 6.574
    Registrato il: 14/11/2004
    Utente Master
    Office 2019
    10 05/11/2021 19:35
    Ciao la macro del post #4 te l'ho data come esempio da sviluppare, in quanto ti crea un immagine del grafico sul desktop, dovevi adattarla al tuo problema quindi puoi eliminarla e mantenere solamente, quella con l'aggiunta della riga.

    Ciao By Sal (8-D
    se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
  • OFFLINE
    Marius44
    Post: 957
    Registrato il: 24/06/2015
    Città: CATANIA
    Età: 80
    Utente Senior
    Excel2019
    00 05/11/2021 21:25
    Ciao

    @GioCas
    Hai provato la mia soluzione? Ho fatto tantissime prove e non si è mai bloccata.

    Ciao,
    Mario
  • OFFLINE
    Marius44
    Post: 958
    Registrato il: 24/06/2015
    Città: CATANIA
    Età: 80
    Utente Senior
    Excel2019
    10 05/11/2021 23:30
    Ciao
    Mi sono incaponito a cercare di capire perchè fa quello strano comportamento.
    Non ci sono riuscito 😭🤢 ma poi ... ho pianto un po' meno😢 perchè ho trovato un'altra via.
    Questo il codice
    Private Sub Cambia_Chart()
    Dim sh As String, cht As String, grf As String
    Dim percorso
    
    On Error Resume Next 'elimina il grafico precedente, se esiste
    Kill ActiveWorkbook.Path & "\" & "Grafico*" & ".gif"
    On Error GoTo 0
    
    sh = "Grafici"
    cht = ComboBox1.Value
    grf = "Grafico"
    percorso = ActiveWorkbook.Path & "\" & grf & ".gif"
     
      ActiveSheet.ChartObjects(cht).Activate
      ActiveChart.Export Filename:=percorso, Filtername:="GIF"
      Me.Image1.Picture = LoadPicture(percorso)
    
    End Sub
    


    Fai sapere. Ciao,
    Mario
  • OFFLINE
    Gio.Cas
    Post: 22
    Registrato il: 22/07/2016
    Città: TORINO
    Età: 67
    Utente Junior
    2016
    00 06/11/2021 00:29
    form visualizzazione grafici
    Ciao Marius44,
    ho provato la tua ultima soluzione e funziona bene, mentre quella precedente non sono riuscito a farla funzionare, o meglio mi andava in errore come la mia iniziale.
    Rimango sempre più stupito della disponibilità fornitami sia da te Marius44 che da BySal, con soluzioni che mi permettono di imparare sempre di più.
    Ps.: però anche per la soluzione che non mi funziona, non demordo e memore dei Vs. suggerimenti cercherò di capirne il perché.
    Grazie
    GioCas 🤩
  • 15MediaObject5,00612 6