Excel-Verknüpfung in vielen Dateien ersetzen?
Hallo,
ich habe einen Ordner mit sehr vielen Excel-Dateien, in welchen sich Verknüpfungen zu einer anderen Datei befinden. Es werden bei diesen Dateien Adressdaten aus einer Datei gezogen.
Leider hatte vor langer Zeit mal Jemand die glorreiche Idee sich diese Adressdatei auf den loaklen Rechner zu kopieren und beim Vorbereiten der neuen Dateien mit der Verknüpfung auf die Adressdatei des lokalen Rechners zu verwenden.
Dadurch enthalten hunderte Excel-Dateien eine falsche Verknüpfung und das Öffnen dauert ewig, weil der Pfad nicht mehr gefunden wird. Der alte Rechner existiert nicht mehr.
Nun würde ich gerne per Makro alle Dateien durchlaufen lassen und den Link \\AlterRechner\Eigene Dateien... durch \\IPdesServers\Pfad ersetzen.
Wie könnte ich da per Makro oder VBS realisieren?
Danke schon mal im Voraus!
Gruß
Torsten
ich habe einen Ordner mit sehr vielen Excel-Dateien, in welchen sich Verknüpfungen zu einer anderen Datei befinden. Es werden bei diesen Dateien Adressdaten aus einer Datei gezogen.
Leider hatte vor langer Zeit mal Jemand die glorreiche Idee sich diese Adressdatei auf den loaklen Rechner zu kopieren und beim Vorbereiten der neuen Dateien mit der Verknüpfung auf die Adressdatei des lokalen Rechners zu verwenden.
Dadurch enthalten hunderte Excel-Dateien eine falsche Verknüpfung und das Öffnen dauert ewig, weil der Pfad nicht mehr gefunden wird. Der alte Rechner existiert nicht mehr.
Nun würde ich gerne per Makro alle Dateien durchlaufen lassen und den Link \\AlterRechner\Eigene Dateien... durch \\IPdesServers\Pfad ersetzen.
Wie könnte ich da per Makro oder VBS realisieren?
Danke schon mal im Voraus!
Gruß
Torsten
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 192775
Url: https://administrator.de/contentid/192775
Ausgedruckt am: 24.11.2024 um 09:11 Uhr
7 Kommentare
Neuester Kommentar
Hier ein Ansatz für ein Makro:
Die Sub ChangeMultipleFiles sucht sich erst mal alle Excel-Dateien in dem angegebenen Ordner raus um dann die Datei zu öffnen und die entsprechenden Stellen im Dokument zu ersetzen.
Die Funktion ReplacePath sucht in der Arbeitsmappe entsprechende Textstellen und ersetzt sie durch deine Angaben mit dem Aufruf: ReplacePath "D:\Pfad\", "\\Server\".
Zum Schluss speichert das Makro die Datei und schließt sie wieder, dann gehts auf zum nächsten Excel-File.
Du kannst dann noch das ActiveWorkbook.BreakLink mit einbauen.
Grüße Uwe
Die Sub ChangeMultipleFiles sucht sich erst mal alle Excel-Dateien in dem angegebenen Ordner raus um dann die Datei zu öffnen und die entsprechenden Stellen im Dokument zu ersetzen.
Die Funktion ReplacePath sucht in der Arbeitsmappe entsprechende Textstellen und ersetzt sie durch deine Angaben mit dem Aufruf: ReplacePath "D:\Pfad\", "\\Server\".
Zum Schluss speichert das Makro die Datei und schließt sie wieder, dann gehts auf zum nächsten Excel-File.
Du kannst dann noch das ActiveWorkbook.BreakLink mit einbauen.
Function ReplacePath (oldpath As String, newpath As String)
cells.Replace What:=oldpath, Replacement:=newpath, LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End Function
Sub ChangeMultipleFiles()
FOLDER_EXCELFILES = "C:\excelfiles\"
Set fso = CreateObject("Scripting.Filesystemobject")
Set folderExcelFiles = fso.GetFolder(FOLDER_EXCELFILES)
For Each file In folderExcelFiles.Files
ext = Right(file.Name, Len(file.Name) - InStrRev(file.Name, "."))
If LCase(ext) = "xls" Or LCase(ext) = "xlsx" Then
Dim doc As Workbook
Debug.Print file.Path
Set doc = Application.Workbooks.Open(file.Path, 0)
ReplacePath "D:\Pfad\", "\\Server\"
doc.Save
doc.Close
End If
Next
End Sub
Grüße Uwe
Na sicher geht das mit Regular Expressions kannst du das komfortabel erledigen:
Du musst aber zu deinem VBA Projekt folgenden Verweis hinzufügen (Menü Extras/Verweise...):
Microsoft VBScript Regualr Expressions 5.5
Der Suchpattern wird in der vorletzten Zeile angegeben. In der letzten Zeile wird der Funktion der zu untersuchende String übergeben. Wenn der angegebene Pattern dazu passt gibt die Funktion True(Wahr) zurück, ansonsten False(Falsch).
Tutorials zu Regular Expressions findest du zu Hauf im Netz.
uwe
Du musst aber zu deinem VBA Projekt folgenden Verweis hinzufügen (Menü Extras/Verweise...):
Microsoft VBScript Regualr Expressions 5.5
Dim myRegExp, FoundMatch
Set myRegExp = New RegExp
myRegExp.IgnoreCase = True
myRegExp.Pattern = ".*Test.xls.*"
FoundMatch = myRegExp.Test("c:\Pfad\Test.xls")
Der Suchpattern wird in der vorletzten Zeile angegeben. In der letzten Zeile wird der Funktion der zu untersuchende String übergeben. Wenn der angegebene Pattern dazu passt gibt die Funktion True(Wahr) zurück, ansonsten False(Falsch).
Tutorials zu Regular Expressions findest du zu Hauf im Netz.
uwe