Ecco un possibile lavoro.
Sub ChartExample()
Dim s As Shape
Set s = Application.Presentations(1).Slides(1).Shapes.AddOLEObject(ClassName:="Excel.Chart")
End Sub
Si potrebbe quindi manipolare il grafico si è aggiunto tramite il s.OLEFormat.Object
. Ho solo sperimentato un po ', ma non apre un'applicazione esterna di Excel e non ho visto alcun sfarfallio estremo a meno che non avessi attivato l'oggetto. Un compromesso è che almeno in PowerPoint 2010, è necessario convertirlo per utilizzare tutte le funzionalità. Se questo non funziona, puoi sempre provare web components.
Modifica: Non capisco perché questo metodo causi un problema, ma per cercare di aiutare ulteriormente qui c'è un po 'più di codice che mostra effettivamente la manipolazione dell'oggetto. Questo è stato scritto con oggetti invece di cartelle di lavoro ecc., Quindi non è necessario fare riferimento. Richiede solo che l'utente abbia Excel sul proprio computer.
Option Explicit
Const xlcolumns = 2
Sub ChartExample()
Dim s As Shape
Dim wb As Object, chart As Object, data As Object
Set s = Application.Presentations(1).Slides(1).Shapes.AddOLEObject(ClassName:="Excel.Chart")
Set wb = s.OLEFormat.Object
Set chart = wb.Sheets(1)
Set data = wb.Sheets(2)
'Set the range for the chart data
chart.setsourcedata Source:=data.Range("A1:C7"), PlotBy:= _
xlcolumns
'Update data values for the chart
data.Range("B1").Value = "Column Label 1"
data.Range("C1").Value = "Column Label 2"
data.Range("A2:C7").clearcontents
data.Range("A2").Value = "Row Label"
data.Range("B2").Value = 7
data.Range("C2").Value = 11
End Sub
fonte
2012-07-17 14:20:42
Non ho provato questo, ma come è diverso da Slide.AddChart? Non apre automaticamente la cartella di lavoro di Excel? – simendsjo
Il codice @simendsjo ha anche i dati necessari per creare il grafico. Quindi potrebbe non essere visualizzato excel. Non ho potuto provare sopra il codice come raramente uso Windows. – 465544
È esattamente quello che sto facendo (Shapes.AddChart), quindi aprirà Excel anche quando chiamato dal codice – simendsjo