AW: Power Point Daten aktualisieren
02.04.2007 23:21:00
fcs
Hallo Helmut,
automatische Berechnen von Inhalten in PP ist meines Wissens schwierig und erfordert immer VBA-Prozeduren. Ich habe in PowerPoint97 ein wenig mit Makros und zuweisen von Texten zu Textfeldern experimentiert.
Wenn die Berechnungen nicht zu kompliziert sind, dann könnte man die gesamte Berechnung in VBA abbilden. Ein einfaches Beispiel ist im nachfolgenden Code.
Ich hab es aber auch geschafft, dass von PowerPoint aus per Makro die Inhalte von einzelnen Excelzellen Textfeldern zugewiesen werden. Leider funktioniert das noch nicht optimal, da zumindest bei meinem System (Win98, Office97) immer irgendwelche Reste der Excelanwendung im System verbleiben. Hier ist ggf. etwas Optimierungsbedarf.
Ich weiss auch auch nicht ob PP zum Automatisieren so etwas wie Auto-Open Makros hat, die beim Öffnen der Datei starten. so dass die Aktualisierung ggf. immer von Hand gestartet werden muss.
PP-Beispieldatei:
https://www.herber.de/bbs/user/41509.ppt
Gruß
Franz
Sub Daten_ausExcel_holen()
'Werte aus Exceldatei holen und in PowerPoint Textfeldern zuweisen
'Im PP-VBA-Editor under Menü Extras-->Verweise "Microsoft Excel xx.yy Object Library" _
aktivieren!
Dim wb As workbook, wks As Worksheet
Dim Folie As Slide, Textfeld As Shape
'Exceldatei öffen und Tabellenblatt zuweisen
Set wb = Workbooks.Open(FileName:="C:\Test\TestDatei.xls", ReadOnly:=True)
Set wks = wb.Worksheets("Tabelle1")
'Textfeldern in PowerPoint Folien Wete aus der Exceldatei zuweisen
Set Folie = ActivePresentation.Slides(1)
Set Textfeld = Folie.Shapes("Text Box 6")
Textfeld.TextFrame.TextRange.Text = wks.Range("A1").Text
Set Folie = ActivePresentation.Slides(2)
Set Textfeld = Folie.Shapes("Text Box 4")
Textfeld.TextFrame.TextRange.Text = wks.Range("A5").Text
Exceldatei schliessen
wb.Close savechanges:=False
End Sub
Sub Berechnen()
'Rechnen in Powerpoint mit Textfeld-Werten
Dim Folie As Slide, Textfeld As Shape, Wert1 As Double
'Wert aus Textfeld in Folie 1 auslesen
Set Folie = ActivePresentation.Slides(1)
Set Textfeld = Folie.Shapes("Text Box 6")
Wert1 = CDbl(Textfeld.TextFrame.TextRange.Text)
'Wert für Textfeld in Folie 2 berechnen und zuweisen
Set Folie = ActivePresentation.Slides(2)
Set Textfeld = Folie.Shapes("Text Box 4")
Textfeld.TextFrame.TextRange.Text = Format(Wert1 * 5, "#,##0.00")
End Sub
Sub Elementeanzeigen()
'Zeigt für aktive Folie die Shape-Elemente mit Namen und Werten an
'Hilfreich, um die Namen der Elemente für anderen Code herauszubeommen
Dim figur As Shape
For Each figur In ActiveWindow.Selection.SlideRange.Shapes
figur.Select
MsgBox ActiveWindow.Selection.SlideRange.Name & " : Element: " & figur.Name _
& IIf(figur.HasTextFrame, " Text: " & figur.TextFrame.TextRange.Text, "")
Next
End Sub