Excel-Dateien mit externen Verknüpfungen automatisch finden
Moin allerseits,
das Problem ist so alt wie Excel selbst. Ein Verzeichnisauf einem Fileserver, das u.A. Unmengen Excel-Dateien enthält, soll verschoben werden. Nun sind ja Excel-Dateien gerne untereinander verknüpft oder enthalten Verbindungen zu anderen Dateien wie z.B. Query-Dateien, etc.
Meine Frage ist, wie man solche Kandidaten vorab, möglichst automatsich, identifiziert, um nicht später mit einem Haufen kaputter Dateien dazustehen, die dann mühsam wieder repariert werden müssen, sofern überhaupt möglich.
Ideal wäre ein Tool, dass einen Ordner inkl. Unterordnern durchsucht und die Excel-Dateien entsprechend checkt und katalogisiert. Gibt es so was?
Andere Lösungsvorschläge?
Schon mal vielen Dank vorab
illbert
das Problem ist so alt wie Excel selbst. Ein Verzeichnisauf einem Fileserver, das u.A. Unmengen Excel-Dateien enthält, soll verschoben werden. Nun sind ja Excel-Dateien gerne untereinander verknüpft oder enthalten Verbindungen zu anderen Dateien wie z.B. Query-Dateien, etc.
Meine Frage ist, wie man solche Kandidaten vorab, möglichst automatsich, identifiziert, um nicht später mit einem Haufen kaputter Dateien dazustehen, die dann mühsam wieder repariert werden müssen, sofern überhaupt möglich.
Ideal wäre ein Tool, dass einen Ordner inkl. Unterordnern durchsucht und die Excel-Dateien entsprechend checkt und katalogisiert. Gibt es so was?
Andere Lösungsvorschläge?
Schon mal vielen Dank vorab
illbert
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 94204
Url: https://administrator.de/contentid/94204
Ausgedruckt am: 22.11.2024 um 07:11 Uhr
3 Kommentare
Neuester Kommentar
Hallo illbert und willkommen im Forum!
Das folgende VBScript (auf Basis einer "Inspiration" durch einen Beitrag auf www.Office-Loesung.de - Verknüpfungen auslesen) sollte als Ergebnis eine Textdatei (Speicherort siehe Zeile 2) in folgendem Format liefern:
Da Du hinsichtlich der "Katalogisierung" keine genaueren Vorstellungen geäußert hast, schien mir diese Form sinnvoll - damit kannst Du zB einen Import in Excel durchführen (TAB als Trennzeichen) und erhältst die Dateien in der ersten und die Verknüpfungen in der zweiten Spalte, welche Du, anhand des Semikolons, mit "Text in Spalten..." bei Bedarf noch weiter aufteilen kannst.
Eigentlich sollten ja nur Verknüpfungen zu einem anderen Ordner Probleme bereiten - daher werden die Verknüpfungsziele in der Liste mit relativem Pfad angegeben (soferne sie sich im selben Ordner oder in einem Unterordner befinden). Wenn alle Pfade absolut gewünscht wären, einfach den entsprechenden Schalter in Zeile 3 auf "False" setzen.
Aufgerufen werden kann das Script per Doppelklick - dann wird der in Zeile 1 festgelegte Startordner verwendet, oder per Drag & Drop des gewünschten Startordners auf die Scriptdatei.
Grüße
bastla
Das folgende VBScript (auf Basis einer "Inspiration" durch einen Beitrag auf www.Office-Loesung.de - Verknüpfungen auslesen) sollte als Ergebnis eine Textdatei (Speicherort siehe Zeile 2) in folgendem Format liefern:
Pfad der Excel-Datei <TAB> Pfad der ersten Verknüpfung[;Pfad jeder weiteren Verknüpfung]
Eigentlich sollten ja nur Verknüpfungen zu einem anderen Ordner Probleme bereiten - daher werden die Verknüpfungsziele in der Liste mit relativem Pfad angegeben (soferne sie sich im selben Ordner oder in einem Unterordner befinden). Wenn alle Pfade absolut gewünscht wären, einfach den entsprechenden Schalter in Zeile 3 auf "False" setzen.
Aufgerufen werden kann das Script per Doppelklick - dann wird der in Zeile 1 festgelegte Startordner verwendet, oder per Drag & Drop des gewünschten Startordners auf die Scriptdatei.
StartOrdner = "D:\DeinOrdner" 'Default
LogFile = "D:\Verknüpfungen.txt" 'Ergebnisdatei
Rel = True 'Relative Pfade verwenden?
If WScript.Arguments.Count > 0 Then StartOrdner = WScript.Arguments(0)
Set fso = CreateObject("Scripting.FileSystemObject")
Set L = fso.CreateTextFile(LogFile, True)
Set XL = CreateObject("Excel.Application")
DoFolder fso.GetFolder(StartOrdner)
XL.Quit
L.Close
Sub DoFolder(Folder)
If LCase(Folder.Name) <> LCase("System Volume Information") Then
FolderPath = Folder.Path
If Right(FolderPath, 1) <> "\" Then FolderPath = FolderPath & "\"
For Each File In Folder.Files
If LCase(Right(File.Name,4)) = ".xls" Then
Links = XL.Workbooks.Open(File.Path,0).LinkSources(1)
XL.ActiveWorkbook.Close 0
If Not IsEmpty(Links) Then
LinkListe = Join(Links, ";")
If Rel Then LinkListe = Replace(LinkListe, FolderPath, "", 1, -1, vbTextCompare)
L.WriteLine File.Path & vbTab & LinkListe
End If
End If
Next
For Each SubFolder In Folder.SubFolders
DoFolder(SubFolder)
Next
End If
End Sub
bastla