vandread
Lt. Commander
- Registriert
- Nov. 2004
- Beiträge
- 1.376
Hallo,
ich habe eine PowerPoint Presäntation in der mehrere Excel-Diagramme enthalten sind. Diese Diagramme wurden aus einer Excel-Datei kopiert und in den Folien eingefügt (sind also verknüpft). Wenn man also (ausgehend von Office 2010) in PowerPoint auf Datei/Informationen/Verknüpfungen mit Dateien bearbeiten geht sieht man alle Diagramme und den entsprechenden Pfad zur jweiligen Excel-Datei.
Ich möchte jetzt gerne ein Makro schreiben welches die Pfade der Verknüpfungen bearbeitet. Stellt euch einfach vor da würden 100 Verknüpfungen sein mit dem Pfad "C:\folder\data.xlsx" und daraus soll einfach "C:\folder\tmp\data.xlsx" werden. Schön wäre es natürlich wenn man dort relative Pfade angeben könnte aber das geht soweit ich weiß nicht...
Meine erste Recherche im Internet brachte mich zu diesem Forum:
http://www.office-loesung.de/ftopic15700_0_0_asc.php
Dort wird das gleiche Problem diskutiert und jemand hat folgenden Code gepostet:
Dieser Code soll eigentlich den Pfad der Verlinkungen so ändern dass er durch den aktuellen Pfad der PowerPoint-Datei ersetzt wird. Problem ist aber dass die ganzen Diagramme nicht als msoLinkedOLEObject erkannt werden sondern als einfache msoChart.
Hier kann man nachscauen welche Shape-Arten es gibt:
https://msdn.microsoft.com/de-de/library/office/ff744590(v=office.15).aspx
Weiterhin habe ich folgendes auf Stackoverflow finden können:
http://stackoverflow.com/questions/27852935/what-object-does-msolinkedoleobjects-refer-to
Bei mir sind es aber wie gesagt ganz normale charts (also msoChart) obwohl sie definitiv verknüpft sind.
Kann mir eventuell jemand erklären wo der Fehler ist oder wie ich die Diagramme verknüpfen muss damit es msoLinkedOLEObject sind?
Vielen Dank!
ich habe eine PowerPoint Presäntation in der mehrere Excel-Diagramme enthalten sind. Diese Diagramme wurden aus einer Excel-Datei kopiert und in den Folien eingefügt (sind also verknüpft). Wenn man also (ausgehend von Office 2010) in PowerPoint auf Datei/Informationen/Verknüpfungen mit Dateien bearbeiten geht sieht man alle Diagramme und den entsprechenden Pfad zur jweiligen Excel-Datei.
Ich möchte jetzt gerne ein Makro schreiben welches die Pfade der Verknüpfungen bearbeitet. Stellt euch einfach vor da würden 100 Verknüpfungen sein mit dem Pfad "C:\folder\data.xlsx" und daraus soll einfach "C:\folder\tmp\data.xlsx" werden. Schön wäre es natürlich wenn man dort relative Pfade angeben könnte aber das geht soweit ich weiß nicht...
Meine erste Recherche im Internet brachte mich zu diesem Forum:
http://www.office-loesung.de/ftopic15700_0_0_asc.php
Dort wird das gleiche Problem diskutiert und jemand hat folgenden Code gepostet:
Code:
Sub VerknuepfungenAendern()
Dim Praes As Presentation, Blatt As Slide, Bild As Shape, pfad, kopie As String
Set Praes = ActivePresentation
For Each Blatt In Praes.Slides
For Each Bild In Blatt.Shapes
If Bild.Type = msoLinkedOLEObject Then
If InStr(Bild.OLEFormat.ProgID, "Excel.Sheet") > 0 Then
If InStr(1, a, "[") > 0 Then
pfad = Bild.LinkFormat.SourceFullName
suche = InStr(1, pfad, "Projekt-Tabellen_nicht_umbenennen.xls")
kopie = Mid(pfad, suche)
neuerpfad = pfad & kopie
Else
pfad = Bild.LinkFormat.SourceFullName
MsgBox ("alter pfad: " & pfad)
suche = InStr(1, pfad, "\Projekt-Tabellen_nicht_umbenennen.xls")
MsgBox ("Position: " & suche)
kopie = Mid(pfad, suche)
MsgBox ("Dateiname und Zellenzuweisung: " & kopie)
neuerpfad = ActivePresentation.Path & kopie
MsgBox ("Neuer Pfad: " & neuerpfad)
End If
If neuerpfad <> Bild.LinkFormat.SourceFullName Then
Bild.LinkFormat.SourceFullName = neuerpfad
End If
End If
End If
Next
Next
End Sub
Hier kann man nachscauen welche Shape-Arten es gibt:
https://msdn.microsoft.com/de-de/library/office/ff744590(v=office.15).aspx
Weiterhin habe ich folgendes auf Stackoverflow finden können:
http://stackoverflow.com/questions/27852935/what-object-does-msolinkedoleobjects-refer-to
Dort ist nun die Rede von embedded und linked charts. Soweit ich es aber verstanden habe müssen es linked charts sein damit ich den Pfad ändern kann bzw. auf die Eigenschaft LinkFormat zugreifen kann.Embedded charts and Linked charts are two entirely different things. Perhaps you have embedded charts rather than linked. You might also test to see if oshp.Type = msoEmbeddedOLEObject If so, the chart is embedded and will have no linkformat.sourcefullname property. Also, if you're looking at charts and not worksheets, test to see if .ProgID contains just "Excel", not "Excel.Sheet" – Steve Rindsberg Jan 9 at 16:08
Bei mir sind es aber wie gesagt ganz normale charts (also msoChart) obwohl sie definitiv verknüpft sind.
Kann mir eventuell jemand erklären wo der Fehler ist oder wie ich die Diagramme verknüpfen muss damit es msoLinkedOLEObject sind?
Vielen Dank!