2017-11-23 3 views
0

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

+0

Bitte zeigen Sie uns ein Beispiel dafür, wie die gesamte Zeichenfolge pptShape.LinkFormat.SourceFullname aussieht. –

+0

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

Antwort

0

in der Tat, die Formel funktioniert gut. der Ersatz von Link nicht funktioniert, weil in dem Originalblatt, das ich das erste Objekt in das kopiert, Auswahlbereich war Graph 3. Beim Kopieren des Blattes versucht Excel automatisch, es bei 1 zu beginnen, so dass Graph 3 zu Gr wurde aph 1. Beim Ersetzen der Verknüpfungen stimmen die Diagramme nicht überein.

Damit diese Formel funktioniert, müssen Sie im Excel-Auswahlbereich sicherstellen, dass Ihre Diagramme auf die gleiche Weise zwischen dem Originalblatt und dem neuen Blatt benannt werden.