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

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

4
задан 10.12.2009, 12:01

3 ответа

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

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

image

2
ответ дан 07.12.2019, 19:46

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

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

3
ответ дан 07.12.2019, 19:46

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

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


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

Создание от A. Ответ Scagnelli, можно взять любимый язык.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 открытым во время целого алгоритма, просто 'открытого, замена и близко' во внутреннем цикле.

3
ответ дан 07.12.2019, 19:46

Теги

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