illbert
Goto Top

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

Content-ID: 94204

Url: https://administrator.de/contentid/94204

Ausgedruckt am: 22.11.2024 um 07:11 Uhr

bastla
bastla 12.08.2008 um 11:39:36 Uhr
Goto Top
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:
Pfad der Excel-Datei <TAB> Pfad der ersten Verknüpfung[;Pfad jeder weiteren Verknüpfung]
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.
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
Grüße
bastla
illbert
illbert 12.08.2008 um 12:19:20 Uhr
Goto Top
Hallo bastla,
das sieht ja schon mal cool aus - vielen Dank für deine Hilfe face-smile
Bzgl. der Katalogisierung würde ich mir einfach eine Liste der betreffenden Dateien mit Pfad wünschen. Im Idealfall auch noch, auf welche externen Dateien sie zeigen.

Ciao
illbert

Nachtrag
Ich habe vorhin mal getestet. Im prinzip macht das Skript genau, was ich erwarte. Ich habe nur leider zwei Probleme damit:

- ist eine Excel-Datei geschützt, schmiert das Skript ab.
- Beim Ausführen der workbook.open-Methode werden offenbar in den Dateien enthaltene Makros ausgeführt. Aber zumindest schon mal eine gute Arbeitsgrundlage face-smile

Ciao
illbert
Jasmine
Jasmine 23.05.2011 um 17:03:36 Uhr
Goto Top
Hallo,

für alle die noch unter kaputten Office Verknüpfungen leiden: Wir haben unsere Datenmigration mit MigrateLink durchgeführt:

www.firstattribute.com

Der LinkInspector zum Analysieren der vorhandenen Verknüpfungen ist kostenlos.

Ciao J.