Hallo Leute,
erstmal zu meiner Situation:
Da das automatische Aktualisieren von Link-Pfaden in .docx Dokumenten nicht funktioniert, habe ich in VBA ein entsprechendes Makro geschrieben, welches das bewerkstelligen soll. (Wer das Problem nicht kennt: Erstellt man in Word Links zu Excel-Tabellen, wird der entsprechende Pfad in das Link-Field geschrieben. Verschiebt man nun den gemeinsamen Ordner (mit Word und Excel Dateien) in einen anderen Pfad mit anderem Laufwerksnamen etc., aktualisieren sich die Pfade nicht automatisch)
Der Code funktioniert soweit auch, allerdings sind die verlinkten Excel-Dateien relativ groß, und so wie ich den Code aktuell stehen habe, wird bei jeder einzelnen Aktualisierung des Link-Pfades die entsprechende Datei geladen. Das kann besonders nervig sein, wenn es sich um ein Netzwerklaufwerk handelt, welches die Dateien nicht so schnell herunterläd. Bei ca 250 Links zieht sich das dann unnötig in die Länge.
Jetzt zu meiner Frage:
Gibt es eine Möglichkeit, dass die Dateien nicht direkt geladen werden, sobald der Link editiert wurde? Ich würde das gern innerhalb der Schleife für die einzelnen Links ausschalten, dann die Links editieren und NACH der Schleife alle Links auf einmal aktualisieren (bzw die Excel Dateien herunterladen lassen), um Zeit zu sparen.
Ich hoffe ich habe mich verständlich ausgedrückt, ansonsten gehe ich gern auf Fragen ein. Anbei noch mein entsprechender Code:
Sub fieldlinksupdate()
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Dim Path As String
Dim Excel As Object
Dim Exceldummy As Object
Application.DisplayStatusBar = True
Path = ActiveDocument.Path
i = ActiveDocument.Fields.Count 'Anzahl der im Dokument vorhandenen Field-links
k = 1
Count = 0
Set Exceldummy = CreateObject("Excel.Application")
Set Excel = GetObject(, "Excel.Application") 'Schließen aller Excel Applikationen, damit keine Fehlermeldung "Es können keine zwei Dokumente desselben Namens geöffnet werden" erscheint
Excel.Application.DisplayAlerts = False
Excel.Application.Asktoupdatelinks = False
Do
Set f = ActiveDocument.Fields(k)
Application.StatusBar = "Aktuell in Schleifendurchlauf " & k & " von " & i
If Not f.OLEFormat Is Nothing Then 'ich hatte gehofft, damit klappt es, tut es aber nicht :(
f.LinkFormat.AutoUpdate = False
On Error GoTo Eingabefehler
Excel.Application.DisplayAlerts = False
Excel.Application.Asktoupdatelinks = False
Excel.Application.Quit
Eingabefehler:
f.LinkFormat.SourceFullName = Path & "\" & f.LinkFormat.SourceName 'Überschreiben des Links --> Hier wird die "neue" Datei "heruntergeladen", was zu Verzögerungen führt
Count = Count + 1
End If
k = k + 1
Loop Until k = i + 1
MsgBox ("Es wurden " & Count & " Links aktualisiert. Der neue Pfad lautet: " & ActiveDocument.Path)
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
|