Как найти и заменить пути ссылки в нескольких файлах Excel одновременно

10846
Mehper C. Palavuzlar

У нас есть огромная папка с офисными документами на нашем сервере. ОНО хочет изменить имя папки с Mehper_repositoryна Planning_reports. Так как большинство файлов Excel в подпапках связанно друг с другом, мне нужно найти и заменить каждое содержимое ячейки, содержащее \\FileSrv\Mehper_repository\в \\FileSrv\Planning_reports\. Проблема в том, что программа поиска / замены Excel может выполнять поиск только в пределах листа или рабочей книги. Как я могу искать в папке / подпапках, просто просматривая формулы, и заменить это выражение?

4

3 ответа на вопрос

3
Tom Wijsman

Макро подход:

Я не могу ответить на этот вопрос точно, но как насчет использования макропрограммы, поэтому единственное, что вам нужно сделать, это открыть файлы один за другим и запустить макрос? Это может быть выполнимо, если коллекция не слишком большая, если нет, вам, вероятно, придется придумать программирование нестандартного решения ...


Программирование специального автоматического решения:

Основываясь на ответе А. Сканелли, вы можете взять ваш любимый язык .NET и сделать (примеры C #):

Псевдокод:

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 

Объяснение:

Просто передайте путь к родительскому каталогу и ссылку на список, когда вы вызываете их рекурсивно. Это позволяет получить список папок, файлы которых можно перечислить в двойном цикле.

Оставьте Excel открытым в течение всего алгоритма, просто «открывайте, заменяйте и закрывайте» во внутреннем цикле.

Спасибо за ваше предложение, Том. Проблема в том, что коллекция слишком большая. Думаю, мне понадобится программное решение. Mehper C. Palavuzlar 14 лет назад 0
3
Andrew Scagnelli

Составляя ответ TomWij, переберите все ячейки, ищите ссылки на "\ FileSrv \ Mehper_repository \" и замените на "\ FileSrv \ Planning_reports \". Возможно, вы сможете использовать коллекцию Cells, чтобы сделать это быстрее, но это может привести к неправильному использованию формул (тем более, что эта строка не будет изолирована).

Попробуйте спросить о написании VBA, подобном этому, в StackOverflow, у вас больше шансов получить ответ, связанный с программированием, чем в SuperUser.

2
harrymc

Я бы предложил коммерческий продукт PowerGREP :

PowerGREP - это мощный инструмент Windows grep. Быстрый поиск по большому количеству файлов на вашем ПК или в сети, включая текстовые и двоичные файлы, сжатые архивы, документы MS Word, электронные таблицы Excel, файлы PDF, файлы OpenOffice и т. Д. Найдите нужную информацию с помощью мощных текстовых шаблонов (регулярные выражения) указав форму того, что вы хотите, вместо буквального текста. Поиск и замена одним или несколькими регулярными выражениями для всестороннего ведения веб-сайтов, исходного кода, отчетов и т. Д. Извлечение статистики и знаний из файлов журналов и больших наборов данных.

образ

Похожие вопросы