Hallo zusammen,
Ich möchte eine Powerpoint Präsentation erstellen, in der die Folien anhand von Daten aus einem Excel File erstellt werden.
Hierfür verwende ich das folgende Skript, mit dem die Textfelder die ich will bereits korrekt ausgefüllt werden. Allerdings befindet sich auf der ersten Folie (die immer kopiert und angepasst wird) auch ein Diagramm, bei dem ich nach und nach die Datenquelle vergößeren will (auf jeder Folie soll eine Zeile aus Excel mehr verwendet werden, es geht hier um "Börsenkurse", die sich jede halbe Stunde / jede Folie updaten sollen). Theoretisch sollte das ja via Chart.SetSourceData(Range) möglich sein, allerdings sitze ich bereits seit viel zu langer Zeit an diesem Problem und bekomme immer ein "Laufzeitfehler 13, Typen unverträglich".
'Open the Excel workbook.
Dim OWB As New Excel.Workbook
Set OWB = Excel.Application.Workbooks.Open(ActivePresentation.Path & "\boersenkurse.xlsx")
'Grab the first Worksheet in the Workbook
Dim WS As Excel.Worksheet
Set WS = OWB.Worksheets(1)
'Loop through each used row in Column A
'For i = 3 To WS.Range("A65536").End(xlUp).Row
'Copy the last slide and paste at the end of the presentation
Set newSlide = ActivePresentation.Slides(ActivePresentation.Slides.Count).Duplicate
newSlide.Shapes("Uhrzeit").TextFrame.TextRange.Text = "Stand " & WS.Cells(i, 1).Text & " Uhr"
newSlide.Shapes("BreakingNews").TextFrame.TextRange.Text = WS.Cells(i, 6).Text
newSlide.Shapes("Price1").TextFrame.TextRange.Text = WS.Cells(i, 2).Text
newSlide.Shapes("Price2").TextFrame.TextRange.Text = WS.Cells(i, 3).Text
newSlide.Shapes("Price3").TextFrame.TextRange.Text = WS.Cells(i, 4).Text
newSlide.Shapes("Price4").TextFrame.TextRange.Text = WS.Cells(i, 5).Text
'play around with chart data:
Dim CHRT As Chart
Set CHRT = newSlide.Shapes("Diagramm").Chart
CHRT.ChartData.Activate
Dim RNG As Range
Set RNG = CHRT.ChartData.Workbook.Sheets("Tabelle1").Range("A1:E" & i)
'Debug.Print (RNG.Address) // Gibt wie gewollt $A$1:$E$4 u.s.w. aus
'Genau hier passiert der Fehler, vorher funktioniert alles
CHRT.SetSourceData Source:=RNG
Next
Hoffentlich sieht jemand, warum das nicht funktioniert oder kennt ein Workaround, falls es an einem Bug liegen sollte.
Eine kleine Anmerkung noch: Ich habe erst gestern Abend angefangen, jemals mit VBA zu programmieren, und der Code soll nicht schön sein, sondern erstmal funktionieren.
Taxel
|