Una famiglia di software per fogli di calcolo Microsoft con strumenti per l'analisi, la creazione di grafici e la comunicazione dei dati.
Ciao Danilo,
tenterò di spiegarmi meglio. Prima di iniziare vorrei ringraziarti per la risposta. Lo scopo è inserire uno di quei grafici(istogrammi) presenti in Excel ed inserirlo in una UserForm. Navigando in Internet (vari siti), spiegano che per farlo c'è bisogno di un file tipo mschrt20.ocx da inserire nelle cartelle System32 e SysWOW64 e successivamente immettere in esegui le righe di comando:
regsvr32 c:\windows\system32\mschrt20.ocx
regsvr32 c:\windows\SySWOW64\mschrt20.ocx e cliccare su enter.
Oltre al noto messaggio di errore, non trovo comunque il controllo del grafico nei controlli aggiuntivi e comunque non ho idea di come risolvere l'errore.
Leggendo qua e là spiegano che la soluzione al problema sta nell'inserire una immagine del grafico posto sul foglio di lavoro.
Se possibile vorrei farti qualche domanda.
E' effettivamente possibile usare un controllo per grafico? Esiste un pacchetto completo di controlli ActiveX da inserire nei controlli aggiuntivi?
Il controllo ActiveX Image c'è, è quella la strada che devo percorre per raggiungere lo scopo? Ed usare i file di esempio prima citati?
Non ti servirebbe il mschrt20.ocx in quanto la funzionalità per creare grafici si trova già in Excel. Potrebbe però essere utile se volessi aggiungere questa funzionalità a VB e non utilizzassi Excel.
Per dimostrare un modo di visualizzare i grafici in una Userform, ho adattato un file di John Walkenbach
http://spreadsheetpage.com/downloads/xl/formcharts.xls
Tra l'altro, ho aggiunto un istogramma (Grafico4).
Come vedrai, la Userform comprende un controllo Image, due controlli CommandButton per scegliere il prossimo/precedente grafico, ed un controllo CommandButton per chiudere la Userform:
Per visualizzare un grafico nel controllo Image, se crea un fIle del tipo GIF e si passa il GIF alla proprietà Picture del controllo mediante la funzione LoadPicture:
'=========>>
Private Sub UpdateChart()
Dim CurrentChart As Chart
Dim FName As String
Set CurrentChart = Sheets("Grafici").ChartObjects(ChartNum).Chart
CurrentChart.Parent.Width = 300
CurrentChart.Parent.Height = 150
'\ Salva grafico come GIF
FName = ThisWorkbook.Path & Application.PathSeparator & "temp.gif"
CurrentChart.Export FileName:=FName, FilterName:="GIF"
'\ Mostra il grafico
Image1.Picture = LoadPicture(FName)
End Sub
'<<=========
il codice completo nel modulo Userform è:
'--------->>
Option Explicit
Dim ChartNum As Long
'--------->>
Private Sub UserForm_Initialize()
ChartNum = 1
UpdateChart
End Sub
'--------->>
Private Sub cbInDietro_Click()
If ChartNum = 1 Then ChartNum = 3 Else ChartNum = ChartNum - 1
UpdateChart
End Sub
'--------->>
Private Sub cbAvanti_Click()
If ChartNum = 4 Then ChartNum = 1 Else ChartNum = ChartNum + 1
UpdateChart
End Sub
'--------->>
Private Sub cbChiudi_Click()
Unload Me
End Sub
'--------->>
Private Sub UpdateChart()
Dim CurrentChart As Chart
Dim FName As String
Set CurrentChart = Sheets("Grafici").ChartObjects(ChartNum).Chart
CurrentChart.Parent.Width = 300
CurrentChart.Parent.Height = 150
'\ Salva grafico come GIF
FName = ThisWorkbook.Path & Application.PathSeparator & "temp.gif"
CurrentChart.Export FileName:=FName, FilterName:="GIF"
'\ Mostra il grafico
Image1.Picture = LoadPicture(FName)
End Sub
'<<=========
Potresti scaricare il mio file di prova Danilo20161129.xlsm a:
https://www.dropbox.com/s/2sm5e7c0efnx8sv/Daniloi20161129.xlsm?dl=0
Regards,
Norman