Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Schleife für jedes Tabellenblatt

VBA Schleife für jedes Tabellenblatt
12.05.2021 17:14:10
Jascha
Hallo zusammen,
ich bin hier komplett neu und sehr unerfahren, was VBA betrifft und bin (mal wieder) mit meinem Latein am Ende.
Ich habe eine Masterdatei mit knapp 100 Tabellenblättern (Tabelle1, Tabelle2,...), in der Daten sind. Mithilfe von Thinkcell (ein AddIn) habe ich für jedes Tabellenblatt eine Grafik vorbereitet. Der nachfolgende Code würde für ein bestimmtes Tabellenblatt (hier bspw. Blatt "Tabelle1") mit den darin enthaltenen Daten im Bereich "B1:U11" die Grafik in der PowerPoint-Präsentation mit der Bezeichnung "1" aktualisieren, die Powerpoint speichern und schließen.
Jetzt kommt's zum Problem. Natürlich könnte ich den Code knapp 100 mal schreiben und 100 mal ausführen, macht die ganze Prozedur allerdings unhandlich.
Wie baue ich da alsoeine Schleife ein, damit Grafik 2 in PowerPoint sich auf Tabelle2 bezieht, Grafik 3 auf Tabelle 3,..., wenn ich zudem nicht die genaue Anzahl aller Tabellenblätter kenne (da diese mtl. variieren)?
oh gott, ich hoffe, ich hab euch nicht komplett verwirrt. Aber dennoch schonmal vielen Dank, falls ihr bis hier gelesen habt!
Sub UpdateChart() 'Zieh die für die Grafik zugrundeliegenden Daten im Tabellenblatt "1" (soll also um 1 ansteigen) im Bereich.... Dim rng As Excel.Range Set rng = ActiveWorkbook.Sheets("Tabelle1").Range("B1:U11") ' Aktiviere das Thinkcell AddIn Dim tcaddin As Object Set tcaddin = Application.COMAddIns("thinkcell.addin").Object Dim ppapp As Object Set ppapp = New PowerPoint.Application Dim pres As PowerPoint.Presentation ' PowerPoint Window nicht sichtbar Set pres = ppapp.Presentations.Open( _ Filename:="C:\hier liegt die Powerpoint.pptx", _ Untitled:=msoTrue, _ WithWindow:=msoFalse) ' Die "1" entspricht der 1. Grafik in Powerpoint, die sich auf das Excel-Tabellenblatt "Tabelle1" bezieht und soll daher über eine Schleife "um eins wachsen" Call tcaddin.UpdateChart(pres, "1", rng, False) ' Speichere die Powerpoint-Präsentation unter dem folgenden Pfad pres.SaveAs ("C:\....\.pptx") pres.Close ppapp.Quit End Sub >>>

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Schleife für jedes Tabellenblatt
12.05.2021 18:09:22
ralf_b
Versuch mal dies . Ohne Garantie und ungetestet.

Sub UpdateChart()
Dim oSh    As Worksheet
Dim tcaddin As Object
Dim ppapp As Application
Dim pres As Object
Set ppapp = CreateObject("PowerPoint.Application")
Set tcaddin = Application.COMAddIns("thinkcell.addin").Object
Set pres = ppapp.Presentations.Open( _
Filename:="C:\hier liegt die Powerpoint.pptx", _
Untitled:=msoTrue, _
WithWindow:=msoFalse)
For Each oSh In ActiveWorkbook.Worksheets
Call tcaddin.UpdateChart(pres, oSh.Index, oSh.Range("B1:U11"), False)
Next
' Speichere die Powerpoint-Präsentation unter dem folgenden Pfad
pres.SaveAs ("F:\excel\.......\.pptx")
ppapp.Quit
Set oSh = Nothing:  Set tcaddin = Nothing: Set ppapp = Nothing: Set pres = Nothing
End Sub

Anzeige
AW: VBA Schleife für jedes Tabellenblatt
17.05.2021 16:23:30
Jascha
Funktioniert einwandfrei!
Top, vielen vielen Dank!

197 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige