Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
896to900
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
896to900
896to900
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Verknüpfungen aus Excel in Powerpoint

Verknüpfungen aus Excel in Powerpoint
23.08.2007 16:32:51
a
Hallo,
ich habe im Archiv folgendes Script gefunden was bei mir leider nicht richtig funktioniert. Der TabelleBereich wird nämlich nicht zurückgeschrieben und somit führt die Verknüpfung ins Leere.
Hat jemand eine Idee warum?

Hallo Ralph,
folgendes PowerPoint-Makro ändert die Quell-Datei aller Excel-Ole-Verknüpfungen in einer PP- _
Datei. Ich hab es nur mit 2 Verknüpfungen getestet. Bei 300 ?
Sub Makro1()
'Quelldatei für Excel-Verknüpfungen anpassen
Dim sld As Slide, sh As Shape, TabelleBereich As String, QuelleNeu As String
QuelleNeu = "C:\Lokale Daten\Test\Test.xls"
Application.DisplayAlerts = False
For Each sld In ActivePresentation.Slides
For Each sh In sld.Shapes
If sh.Type = msoLinkedOLEObject Then
'Überprüfung, ob Objekt ein Excel-OLE-Objekt
If Left(sh.OLEFormat.ProgID, 6) = "Excel." Then
'Tabelle und Bereich bzw. Diagramm aus aktueller Quelle auslesen
TabelleBereich = Mid(sh.LinkFormat.SourceFullName, InStr(1, sh.LinkFormat. _
SourceFullName, "!"))
sh.LinkFormat.SourceFullName = QuelleNeu & TabelleBereich
End If
End If
Next
Next
'Verknüpfungen aktualisieren
Application.ActivePresentation.UpdateLinks
Application.DisplayAlerts = True
End Sub
Gruß
Franz


3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Verknüpfungen aus Excel in Powerpoint
24.08.2007 04:33:00
fcs
Hallo a k,
du muss im Code natürlich in Zeile
QuelleNeu = "C:\Lokale Daten\Test\Test.xls"
den Pfad und Dateienamen entsprechend anpassen. Dann sollte es funktionieren. Ich hatte den Code unter Excel 2003 erstellt und auch noch mal unter Excel97 getestet. Er funktioniert mit kleiner Einschränkung auch unter Excel97.
Die Zeit ist nicht stehen geblieben, ich hab das Makro zwischenzeitlich erweitert. Die neue Verknüpfungsdatei kann jetzt in einem Dialogfenster ausgewählt werden. Es können die Verknüpfungen zu mehreren Exceldateien innerhalb einer PP-Präsentation neu festgelegt werden.
Leider hat PP97-VBA nicht das Equivalent zu GetOpenFilename in Excel97-VBA, weshalb ich hier in PP auf die Excel-Funktionalität zurückgreifen musste.
Gruß
Franz

Sub AnpassenVernuepfungVar1()
'Quelldatei(en) für Excel-Verknüpfungen in PP-Präsentation anpassen
'Für korrekte Funktion im VBA-Editor unter Extras-->Verweise _
den Verweis auf die Excel x.y Objekt Library aktivieren
Dim sld As Slide, sh As Shape, TabelleBereich As String, QuelleNeu As Variant
Dim QuelleAlt As String, arrQuelleAlt() As String, arrQuelleNeu() As String
Dim i%, j%, boVorhanden As Boolean, strBoxPrompt$, pos%
'Name(n) der verknüpften Exceldatei(en) finden
i = 0
ReDim arrQuelleAlt(0 To i)
For Each sld In ActivePresentation.Slides
For Each sh In sld.Shapes
If sh.Type = msoLinkedOLEObject Then
'Überprüfung, ob Objekt ein Excel-OLE-Objekt
If Left(sh.OLEFormat.ProgID, 6) = "Excel." Then
'Excel-Dateiname aus Quelle auslesen
QuelleAlt = Left(sh.LinkFormat.SourceFullName, InStr(1, _
sh.LinkFormat.SourceFullName, "!") - 1)
If i  0 Then
boVorhanden = False
'Prüfen, ob QuelleAlt schon im Array erfasst
For j = 1 To i
If arrQuelleAlt(j) = QuelleAlt Then
boVorhanden = True
Exit For
End If
Next
If boVorhanden = False Then
i = i + 1
ReDim Preserve arrQuelleAlt(1 To i)
arrQuelleAlt(i) = QuelleAlt
End If
Else
i = i + 1
ReDim arrQuelleAlt(1 To i)
arrQuelleAlt(i) = QuelleAlt
End If
End If
End If
Next
Next
If QuelleAlt  "" Then
'Neue Verknüpfungsname(n) eingeben
ReDim arrQuelleNeu(1 To i)
For j = 1 To i
QuelleAlt = arrQuelleAlt(j)
QuelleNeu = Excel.Application.GetOpenFilename(Filefilter:="Exceldatei(*.xls),*.xls", _
Title:="Verknüpfung alt: " & QuelleAlt, MultiSelect:=False)
If QuelleNeu = False Then
'Abbrechen wurde gewählt, Verknüpfungsdatei wird nicht geändert
arrQuelleNeu(j) = QuelleAlt
Else
arrQuelleNeu(j) = QuelleNeu
End If
Next
'  Application.DisplayAlerts = False 'Funktioniert in PP 97 nicht
For Each sld In ActivePresentation.Slides
For Each sh In sld.Shapes
If sh.Type = msoLinkedOLEObject Then
'Überprüfung, ob Objekt ein Excel-OLE-Objekt
If Left(sh.OLEFormat.ProgID, 6) = "Excel." Then
'Tabelle und Bereich bzw. Diagramm aus aktueller Quelle auslesen
TabelleBereich = Mid(sh.LinkFormat.SourceFullName, InStr(1, _
sh.LinkFormat.SourceFullName, "!"))
QuelleAlt = Left(sh.LinkFormat.SourceFullName, InStr(1, _
sh.LinkFormat.SourceFullName, "!") - 1)
'Neue Verknüpfung zuweisen
For j = 1 To i
If QuelleAlt = arrQuelleAlt(j) Then
sh.LinkFormat.SourceFullName = arrQuelleNeu(j) & TabelleBereich
Exit For
End If
Next
End If
End If
Next
Next
'Verknüpfungen aktualisieren
Application.ActivePresentation.UpdateLinks
'  Application.DisplayAlerts = True  'Funktioniert in PP 97 nicht
Else
MsgBox "Es sind keine Excel-Verknüpfungen in der Datei vorhanden"
End If
End Sub


Anzeige
AW: Verknüpfungen aus Excel in Powerpoint
24.08.2007 08:06:00
a
Hallo Franz,
leider ersetzt er bei mir wie schon beschrieben zwar den Pfad und die Datei aber der Zellbereich geht dabei verloren. Das Script ersetzt
C:\TEMP\Report.xls!Italy!R7C24:R20C28
durch
C:\TEMP\neue Datei\Report.xls
Ansonsten funktioniert das Script einwandfrei, auch das neue Script.
Noch eine Idee?
Gruß
Achim

AW: Verknüpfungen aus Excel in Powerpoint
24.08.2007 11:18:00
fcs
Hallo Achim,
ich hab das Makro bisher nur benutzt, um die Verzeichnispfade zu aktualiseren, wenn sich das Verzeichnis ändert, die verknüpfte Datei aber die gleiche bleibt. Dann bleibt auch der verknüpfte Bereich erhalten.
Wird der Dateiname gewechselt, dann wird tatsächlich nur die Datei vernüpft, aber der Tabellenbereich oder das Diagramm jedoch nicht.
Ich schau heute Abend noch einmal, ob sich das auch noch irgendwie bereinigen läßt.
Gruß
Franz
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige