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 habe schon den Befehl .LinkFormat.Update = False gefunden, allerdings wird dieser beim Editieren des Link-Pfades einfach wieder auf True gesetzt. Vielleicht auch ein Ansatz, das auf irgendeine Weise zu unterbinden?
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
f.LinkFormat.AutoUpdate = False 'ich hatte gehofft, damit klappt es, tut es _
aber nicht :(
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