Ich habe Probleme mit VBA-Codierung.Change Link Excel Blatt - Grafikobjekt Powerpoint VBA
Ich habe eine Excel-Datei mit verschiedenen Blättern mit Daten und Grafiken. Diese Graphen sind mit einem Powerpoint verknüpft (Graphen wurden kopiert und "mit Link" als Objekte eingefügt).
Das Problem ist, dass ich jetzt einen riesigen Powerpoint von mehr als 130 Folien mit etwa 18 Grafiken auf jeder Folie habe ... Also mehr als 2000 Graphen.
Ich möchte den Namen meiner Blätter ändern und auch einige Folien duplizieren, um die Grafiken mit gefilterten Daten zu füllen.
Mein Problem: - Wenn Sie den Blattnamen ändern, ist der Link natürlich gebrochen. Alles per Hand mit der UI zu aktualisieren ist einfach unmöglich; - Wenn Sie eine Folie in PowerPoint duplizieren, werden die Diagramme immer noch mit demselben Excel-Arbeitsblatt wie die ursprüngliche Folie verknüpft. Die einzige Möglichkeit zum Ändern der Verknüpfung besteht darin, alle Diagramme zu löschen, das Arbeitsblatt in Excel zu duplizieren - mit neuen Daten zu füllen - zu kopieren- Einfügen von Graphen nacheinander in PowerPoint.
Ich habe versucht, ein Makro zu verwenden, aber ... es ändert die gesamte Adresse des Links, löscht alle Blätter Informationen. Gibt es eine Möglichkeit, die harte Adresse zu ändern, aber die gleiche Excel-Datei zu behalten - nur das Blatt zu ändern?
Hier ist, was ich versuche, das Blatt "T3" durch das Blatt "100s" zu ersetzen. Das Makro läuft ohne Fehler, aber dann alle Objekte werden durch eine Kopie des gesamten „100s“ Arbeitsblatt aus meiner Excel-Datei :(
Sub EditPowerPointLinks()
Dim oldFilePath As String
Dim newFilePath As String
Dim pptPresentation As Presentation
Dim pptSlide As Slide
Dim pptShape As Shape
'The old file path as a string (the text to be replaced)
oldFilePath = "\\Server\01xxxx\xxx\xx\X 4.xlsx!T3"
'The new file path as a string (the text to replace with)
newFilePath = "\\Server\01xxxx\xxx\xx\X 4.xlsx!100s"
'Set the variable to the PowerPoint Presentation
Set pptPresentation = ActivePresentation
'Loop through each slide in the presentation
For Each pptSlide In pptPresentation.Slides
'Loop through each shape in each slide
For Each pptShape In pptSlide.Shapes
'Find out if the shape is a linked object or a linked picture
If pptShape.Type = msoLinkedPicture Or pptShape.Type _
= msoLinkedOLEObject Then
'Use Replace to change the oldFilePath to the newFilePath
pptShape.LinkFormat.SourceFullName = Replace(LCase _
(pptShape.LinkFormat.SourceFullName), LCase(oldFilePath), newFilePath)
End If
Next
Next
'Update the links
pptPresentation.UpdateLinks
End Sub
eine Idee Würde jemand ersetzt, wie nur die Blattnamen zu ändern und zu halten alle Objektnamen nach?
vielen Dank, Arthur
Bitte zeigen Sie uns ein Beispiel dafür, wie die gesamte Zeichenfolge pptShape.LinkFormat.SourceFullname aussieht. –
Bitte hängen Sie _solved_ nicht an den Titel an. Stattdessen posten Sie eine Lösung und markieren Sie diese als akzeptiert. Dies wird anderen sagen, dass die Frage gelöst wurde. Bitte nehmen Sie die [Tour] für weitere Informationen. – Bugs