122503
09.06.2015, aktualisiert um 10:05:56 Uhr
12300
21
0
Powerpointpräsentation aktualisieren
Moin zusammen,
ich habe eine Powerpointpräsentation mit einigen Diagrammen erstellt, bei der die Daten verknüpft aus einer Exceltabelle kommen, die auf dem Firmenserver liegt. Jeden Tag werden von vielen Kollegen neue Werte eingetragen, die dann letztendlich angezeigt werden sollen. Die Aktualisierung der Werte findet allerdings immer nur dann statt, wenn die Tabelle auf dem jeweiligen Rechner, auf der auch die Präsentation läuft, neu geöffnet wird. Ich hab nun ein Makro in Excel eingefügt, dass die derzeit offene Exceltabelle schließt und eine Aufgabe mit der Aufgabenplanung erstellt, die die Tabelle nun wieder öffnen soll. Beim automatischen Öffnen durch die Aufgabenverwaltung aktualisieren sich die Werte der Powerpointpräsi jedoch nicht. Hat jemand noch einen anderen Vorschlag, um die automatische Aktualisierung zu ermöglichen?
Besten Dank schonmal ;)
ich habe eine Powerpointpräsentation mit einigen Diagrammen erstellt, bei der die Daten verknüpft aus einer Exceltabelle kommen, die auf dem Firmenserver liegt. Jeden Tag werden von vielen Kollegen neue Werte eingetragen, die dann letztendlich angezeigt werden sollen. Die Aktualisierung der Werte findet allerdings immer nur dann statt, wenn die Tabelle auf dem jeweiligen Rechner, auf der auch die Präsentation läuft, neu geöffnet wird. Ich hab nun ein Makro in Excel eingefügt, dass die derzeit offene Exceltabelle schließt und eine Aufgabe mit der Aufgabenplanung erstellt, die die Tabelle nun wieder öffnen soll. Beim automatischen Öffnen durch die Aufgabenverwaltung aktualisieren sich die Werte der Powerpointpräsi jedoch nicht. Hat jemand noch einen anderen Vorschlag, um die automatische Aktualisierung zu ermöglichen?
Besten Dank schonmal ;)
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 274071
Url: https://administrator.de/contentid/274071
Ausgedruckt am: 22.11.2024 um 11:11 Uhr
21 Kommentare
Neuester Kommentar
Moin,
das lässt sich über ein Makro in der PP machen das alle Slides durchgeht und die Links aktualisiert ...
https://www.google.de/search?hl=de&q=powerpoint+vba+update+linked+sh ...
Gruß jodel32
das lässt sich über ein Makro in der PP machen das alle Slides durchgeht und die Links aktualisiert ...
https://www.google.de/search?hl=de&q=powerpoint+vba+update+linked+sh ...
Gruß jodel32
Und das Makro ist dann auch in der Lage, die geöffnete Exel-Arbeitsmappe (als schreibgeschützt geöffnet) zu aktualisieren?
Sicher.Dafür reicht ein einfaches:
ActivePresentation.UpdateLinks
Hallo zusammen,
Noch als Ergänzung zu Jodels Code der übrigens nicht immer alle Links zuverlässig aktualisiert (insbesondere OLE-Object Links), ein kleines VBS-Script das eine Präsentation updated
Man kann sich natürlich auch direkt ein PPAM-Addin schreiben und in Powerpoint einbinden, dafür sieht der Code so aus:
Grüße Uwe
Noch als Ergänzung zu Jodels Code der übrigens nicht immer alle Links zuverlässig aktualisiert (insbesondere OLE-Object Links), ein kleines VBS-Script das eine Präsentation updated
Dim objPP,p
Set objPP = CreateObject("PowerPoint.Application")
objPP.Visible = True
objPP.DisplayAlerts = False
Set p = objPP.Presentations.Open("C:\Test.pptx")
For Each slide In p.Slides
For Each shp In slide.Shapes
If shp.Type = 10 Then
shp.LinkFormat.Update
End If
Next
Next
p.Save
objPP.DisplayAlerts = True
objPP.Quit
Sub Auto_open()
Dim p As Presentation, shp As Shape, slide As slide
For Each p In Application.Presentations
For Each slide In p.Slides
For Each shp In slide.Shapes
If shp.Type = msoLinkedOLEObject Then
shp.LinkFormat.Update
End If
Next
Next
Next
End Sub
Zitat von @122503:
Hallo Uwe,
die Idee mit vbs ist auch interessant. Da die Präsentation aber durchgehend läuft und nur aktualisiert werden soll,
erübrigen sich die Open-, Save- und Quitbefehle. Kannst du mir das nochmal entsprechend anpassen?
Um die Slides der aktuell offenen Präsentationen zu aktualisieren sieht das dann so aus:Hallo Uwe,
die Idee mit vbs ist auch interessant. Da die Präsentation aber durchgehend läuft und nur aktualisiert werden soll,
erübrigen sich die Open-, Save- und Quitbefehle. Kannst du mir das nochmal entsprechend anpassen?
On Error Resume Next
Dim objPP,p
Set objPP = GetObject(,"Powerpoint.Application")
For Each p In objPP.Presentations
For Each slide In p.Slides
For Each shp In slide.Shapes
If shp.Type = 10 Then
shp.LinkFormat.Update
End If
Next
Next
Next
PS: Warum müssen Warnungen unterdrückt werden?
Für einen reibungslosen Batchbetrieb ist das zu empfehlen .. In einem Script das per Taskplaner aufgerufen werden soll sitzt ja meist keiner davor der einen Dialog wegklicken könnte Das gilt jetzt aber nur für das alte Script, für das bei laufendem Betrieb ohne Öffnen und speichern ist das nicht nötig.
Grüße Uwe
Stell doch einfach mal ein Demo-File online ...dann wissen wir wie du das Excel-File eingebunden hast... da gibt es nämlich mehrere Möglichkeiten
Zitat von @122503:
=INDEX([Eingabetabelle.xlsx]Produktion!$L:$L:[Eingabetabelle.xlsx]Produktion!$L:$L;MAX(ISTZAHL([Eingabetabelle.xlsx]Produktion!$L$573:$L$4500)*ZEILE([Eingabetabelle.xlsx]Produktion!$L$573:$L$4500)))
Dann ist es klar, das kann dann so nicht funktionieren, denn bei diesen Formeln muss die Arbeitsmappe offen sein sonst läuft das nicht.=INDEX([Eingabetabelle.xlsx]Produktion!$L:$L:[Eingabetabelle.xlsx]Produktion!$L:$L;MAX(ISTZAHL([Eingabetabelle.xlsx]Produktion!$L$573:$L$4500)*ZEILE([Eingabetabelle.xlsx]Produktion!$L$573:$L$4500)))
Habe also kein Diagramm aus Excel kopiert bzw. verknüpft, sondern mit der "Diagramm einfügen" Funktion in
Powerpoint gearbeitet und die dafür neu angelegte Exceltabelle genutzt. Der Wert, der durch die Indexfunktion in die
Powerpoint-Exceltabelle geholt wird, füttert dann die jeweiligen Tabellenwerte des Diagramms.
Meine Empfehlung wie du es besser machst, dann funktioniert das einwandfrei (hier getestet):Powerpoint gearbeitet und die dafür neu angelegte Exceltabelle genutzt. Der Wert, der durch die Indexfunktion in die
Powerpoint-Exceltabelle geholt wird, füttert dann die jeweiligen Tabellenwerte des Diagramms.
- Du erstellst das Diagramm in dem Excel-Dokument
- Dann kopierst du das Diagramm in Excel, und fügst es in Powerpoint ein, es ist dann automatisch mit dieser definierten Arbeitsmappe (und nicht mit einer embedded-Variante !) verknüpft und lässt sich aber weiterhin normal in PowerPoint bearbeiten
- Dann musst du in meinem obigen Code nur den Typ des Elements ändern Zeile 8 auf 3 (entspricht dem Typ msoChart):
On Error Resume Next
Dim objPP,p
Set objPP = GetObject(,"Powerpoint.Application")
For Each p In objPP.Presentations
For Each slide In p.Slides
For Each shp In slide.Shapes
' Shapes vom Typ msoChart aktualisieren
If shp.Type = 3 Then
shp.LinkFormat.Update
End If
Next
Next
Next
Wie erfolgt die Aktualisierung?
Simultan oder wenn alle Folien einmal durchgespielt sind?
Die Präsentation wird dann Live aktualisiert, alle Charts auf allen Folien, sie kann dabei laufen, das macht keinen Unterschied.Simultan oder wenn alle Folien einmal durchgespielt sind?
Eine Demo das es läuft kannst du in folgendem Demo-Screencast sehen:
Viel Erfolg
Grüße Uwe
Zitat von @122503:
Andererseits verstehe ich seitens Powerpoint nicht, warum das ganze so nicht umsetzbar ist, ist es doch
eigentlich die deutlich elegantere Lösung.
Finde ich nicht, aber das die Formeln sich nur aktualisieren wenn das Quellsheet offen ist per Design so und liegt nicht an Powerpoint sondern an Excel !Andererseits verstehe ich seitens Powerpoint nicht, warum das ganze so nicht umsetzbar ist, ist es doch
eigentlich die deutlich elegantere Lösung.
(schließlich sind die Diagramme nur da, wo sie auch hingehören
(nämlich in Powerpoint).
Du kannst das Diagramm auch nach dem Kopieren in Excel und Einfügen in PP wieder löschen, in PP bleibt es dann weiterhin erhalten.(nämlich in Powerpoint).
Finde ich persönlich zielgerichteter als einen doppelten Umweg zu machen ... also von einem Sheet aufs andere zu verweisen, wo doch eins vollkommen ausreicht
Gruß jodel32
Denke ich da zu kompliziert bzw. geht das auch einfacher?
Yip zu kompliziert, Werte lassen sich auch ohne ein Sheet explizit zu öffnen auslesen:VBA: mehrere Zellen aus anderer Datei auslesen (ohne diese zu öffnen)
Aber warum ist dein Sheet schreibgeschützt??? Wie soll sich ein schreibgeschütztes Sheet aktualisieren? Irgendwie alles ziemlich konfus deine Konstellation. Ihr solltet mal über eine Datenbank nachdenken (MySQL/Access) das ist wesentlich zielgerichteter für sowas.
Schon mal was von freigegebenen Arbeitsmappen gehört ?
Hallo 122503,
könntest du dein VBA Skript zur Verfügung stellen? Ich habe selbst so etwas 2010 mal machen lassen, allerdings nicht selbst programmiert. Jetzt bin ich allerdings wieder in der Situation, dass eine Kiosk-Präsi laufen lassen will und auf anderen PCs die Excel Datei bearbeitet werden soll, die Präsentation im "Endlosmodus" sich aber automatisch updaten soll.
Ich schaffe es, die Updates zu bekommen, allerdings nur solange die Excel am selben PC offen ist, ansonsten gibt die Präsenation den Fehler aus, dass die Excel bereits geöffnet ist auf einem anderen PC und nicht updaten kann. Ich verwende den Code von weiter oben in diesem Thread
On Error Resume Next
Dim objPP,p
Set objPP = GetObject(,"Powerpoint.Application")
For Each p In objPP.Presentations
For Each slide In p.Slides
For Each shp In slide.Shapes
' Shapes vom Typ msoChart aktualisieren
If shp.Type = 3 Then
shp.LinkFormat.Update
End If
Next
Next
Next
Was ich allerdings auch noch als Herausforderung habe, ist dass die Daten immer wieder auf den Ursprungszustand zurückspringen, also jedes mal updaten wenn die Slide wieder kommt (PPT ist aus wiederholend eingestellt). D.h. ich sehe immer zuerst den Stand, als die Datei aufgemacht wurde. Gibt es eine Möglichkeit, dass sich PPT das merkt und nicht immer auf den Urzustand zurückspringt?
Hast du eine Idee?
könntest du dein VBA Skript zur Verfügung stellen? Ich habe selbst so etwas 2010 mal machen lassen, allerdings nicht selbst programmiert. Jetzt bin ich allerdings wieder in der Situation, dass eine Kiosk-Präsi laufen lassen will und auf anderen PCs die Excel Datei bearbeitet werden soll, die Präsentation im "Endlosmodus" sich aber automatisch updaten soll.
Ich schaffe es, die Updates zu bekommen, allerdings nur solange die Excel am selben PC offen ist, ansonsten gibt die Präsenation den Fehler aus, dass die Excel bereits geöffnet ist auf einem anderen PC und nicht updaten kann. Ich verwende den Code von weiter oben in diesem Thread
On Error Resume Next
Dim objPP,p
Set objPP = GetObject(,"Powerpoint.Application")
For Each p In objPP.Presentations
For Each slide In p.Slides
For Each shp In slide.Shapes
' Shapes vom Typ msoChart aktualisieren
If shp.Type = 3 Then
shp.LinkFormat.Update
End If
Next
Next
Next
Was ich allerdings auch noch als Herausforderung habe, ist dass die Daten immer wieder auf den Ursprungszustand zurückspringen, also jedes mal updaten wenn die Slide wieder kommt (PPT ist aus wiederholend eingestellt). D.h. ich sehe immer zuerst den Stand, als die Datei aufgemacht wurde. Gibt es eine Möglichkeit, dass sich PPT das merkt und nicht immer auf den Urzustand zurückspringt?
Hast du eine Idee?