So finden und ersetzen Sie Linkpfade gleichzeitig in mehreren Excel-Dateien

10861
Mehper C. Palavuzlar

Wir haben einen riesigen Ordner mit Bürodokumenten auf unserem Server. Die IT möchte den Namen des Ordners von Mehper_repositoryin ändern Planning_reports. Da die meisten Excel-Dateien in den Unterordnern miteinander verknüpft sind, muss ich jeden einzelnen Zellinhalt, der enthält \\FileSrv\Mehper_repository\, finden und ersetzen \\FileSrv\Planning_reports\. Das Problem ist, dass das Hilfsprogramm "Suchen / Ersetzen" von Excel nur in Tabellen oder Arbeitsmappen suchen kann. Wie kann ich innerhalb eines Ordners / Unterordners nach Formeln suchen und diesen Ausdruck ersetzen?

4

3 Antworten auf die Frage

3
Tom Wijsman

Ein Makro-Ansatz:

Ich kann das nicht genau beantworten, aber was ist mit dem Verwenden eines Makroprogramms? Dann müssen Sie nur die Dateien einzeln öffnen und das Makro ausführen. Dies kann möglich sein, wenn die Sammlung nicht zu groß ist. Wenn nicht, müssen Sie wahrscheinlich eine individuelle Lösung programmieren ...


Programmieren einer benutzerdefinierten automatischen Lösung:

Aufbauend auf A. Scagnellis Antwort können Sie Ihre bevorzugte .NET-Sprache mitnehmen (C # -Beispiele):

Pseudo-Code:

openExcel  // Fills the list recursively with aboslute paths of the subfolders of path. enumerateFolder(list, path)  // Enumerate paths.  foreach(path in list) { // Enumerate files foreach(file in path) { openFileInExcel replaceFileContents closeFileInExcel } }  closeExcel 

Erläuterung:

Übergeben Sie einfach den Pfad zum übergeordneten Verzeichnis und einen Verweis auf eine Liste, wenn Sie diese rekursiv aufrufen. Dadurch können Sie eine Liste von Ordnern erhalten, deren Dateien Sie in einer Doppelschleife auflisten können.

Lassen Sie Excel während des gesamten Algorithmus geöffnet, in der inneren Schleife "Öffnen, Ersetzen und Schließen".

Danke für deinen Vorschlag, Tom. Das Problem ist, dass die Sammlung zu groß ist. Ich denke, ich brauche eine Programmierlösung. Mehper C. Palavuzlar vor 13 Jahren 0
3
Andrew Scagnelli

Bauen Sie die Antwort von TomWij auf, suchen Sie alle Zellen durch, suchen Sie nach Verweisen auf "\ FileSrv \ Mehper_repository \" und ersetzen Sie sie durch "\ FileSrv \ Planning_reports \". Möglicherweise können Sie die Cells-Auflistung verwenden, um das schneller zu machen, aber dies kann sich auf schlechte Weise mit den Formeln auswirken (vor allem, da der String nicht isoliert wird).

Fragen Sie nach dem Schreiben von VBA auf StackOverflow. Hier erhalten Sie eher eine programmierungsbezogene Antwort als auf SuperUser.

2
harrymc

Ich würde das kommerzielle Produkt PowerGREP vorschlagen :

PowerGREP ist ein leistungsfähiges Windows-Grep-Tool. Schnelles Durchsuchen einer großen Anzahl von Dateien auf Ihrem PC oder Netzwerk, einschließlich Text- und Binärdateien, komprimierten Archiven, MS Word-Dokumenten, Excel-Tabellen, PDF-Dateien, OpenOffice-Dateien usw. Finden Sie die gewünschten Informationen mit leistungsstarken Textmustern (reguläre Ausdrücke). Festlegen der gewünschten Form anstelle von wörtlichem Text. Suchen und ersetzen Sie einen oder mehrere reguläre Ausdrücke, um Websites, Quellcode, Berichte usw. umfassend zu verwalten. Extrahieren Sie Statistiken und Wissen aus Protokolldateien und großen Datensätzen.

image