dies hier ist mein erster Beitrag, also bitte ich um Nachsicht bezüglich auftretenden Missverständnissen. Nun zu meinem Problem:
Ich bin dabei, eine Präsentation zu automatisieren, die Verknüpfungen zu einer Excel enthält. Präsentation und Excel befinden sich im selben Ordner. Dabei sollen die Makros relativiert werden, damit die Dateien an Externe weitergegeben werden können und diese dieselben Funktionen nutzen können.(In PP und Excel sind jeweils Makros, die ablaufen müssen). Der Ablauf durch die Makros läuft so ab:
Nach öffnen der Präsentation klickt der Anwender auf das Makro "Excel öffnen", welches die _ verknüpfte Excel öffnet.
Sub Exoeffnen()
Dim MSExc As Object, a As String, b As String
a = ActivePresentation.Path
b = a & "\Quelle.xlsm"
Set MSExc = CreateObject("Excel.Application")
MSExc.Visible = True
MSExc.Workbooks.Open b
Call VerknuepfungenAendern
MSExc.ActiveWorkbook.Save
ActivePresentation.UpdateLinks
ActivePresentation.Save
End Sub
Beim Öffnen der Excel laufen Makros zum auffrischen der Daten zuverlässig ab und wechselt zurück, um das Makro VerknuepfungAendern zu starten.
Hierbei scheitert es dann an der dick markierten Zeile, wobei dann Laufzeitfehler 5 erscheint)
Sub VerknuepfungenAendern()
Dim Praes As Presentation, Blatt As Slide, Bild As Shape
Dim vDatei As Variant, sPfad As String, sExcelFile As String
Dim NeuerPfad
sPfad = ActivePresentation.Path
vDatei = sPfad & "\Quelle.xlsm"
sExcelFile = Mid(vDatei, Len(sPfad) + 2)
Set Praes = ActivePresentation
For Each Blatt In Praes.Slides
For Each Bild In Blatt.Shapes
If Bild.Type = msoLinkedOLEObject Then
If InStr(1, Bild.OLEFormat.ProgID, "Excel.Chart") > 0 Then
'Diagramm in eigenem Register
'C:\TEST\MAPPE10.XLS!Diagramm1
NeuerPfad = Bild.LinkFormat.SourceFullName
NeuerPfad = vDatei & Mid(NeuerPfad, InStr(1, NeuerPfad, "!"))
Bild.LinkFormat.SourceFullName = NeuerPfad
End If
If InStr(Bild.OLEFormat.ProgID, "Excel.Sheet") > 0 Then
If InStr(1, Bild.LinkFormat.SourceFullName, "[") > 0 Then
'Diagramm eingebettet in Tabelle
'C:\TEST\MAPPE2.XLS!Tabelle1![MAPPE2.xls]Tabelle1 Diagramm 1
NeuerPfad = Bild.LinkFormat.SourceFullName
NeuerPfad = Mid(NeuerPfad, InStr(1, NeuerPfad, "!"))
NeuerPfad = vDatei & Mid(NeuerPfad, 1, InStr(2, NeuerPfad, "!")) _
& "[" & sExcelFile & Mid(NeuerPfad, InStr(1, NeuerPfad, "]"))
Bild.LinkFormat.SourceFullName = NeuerPfad
Else
'Tabellenbereich
'C:\TEST\MAPPE10.XLS!Tabelle1!Z3S1:Z7S3
NeuerPfad = Bild.LinkFormat.SourceFullName
NeuerPfad = vDatei & Mid(NeuerPfad, InStr(1, NeuerPfad, "!"))
Bild.LinkFormat.SourceFullName = NeuerPfad
End If
End If
End If
Next
Next
End Sub
wie kann ich nun das Makro ändern, sodass Powerpoint jedes Mal (um sicherzustellen, dass die Verknüpfungen immer korrekt sind) die Verknüpfungen zuverlässig ändert, bzw. erkennt jemand, warum der Fehler passiert?
Das Makro habe ich kopiert und angepasst, da ich selbst nicht begabt bin mit VBA
Ich bedanke mich schon einmal für jede Hilfe!
Lg Roland