у нас есть огромная папка с документами Office на нашем сервере. Он хочет изменить имя папки от Mehper_repository
to Planning_reports
. Поскольку большинство файлов Excel в подпапках связаны друг с другом, мне нужно найти и заменить каждое содержимое ячейки, содержащее FileSrvMehper_repository
до FileSrvPlanning_reports
. Проблема в том, Excel найти / заменить утилита может искать только в пределах листа или книги. Как я могу искать в папке / подпапках, просто глядя в формулах и заменяя это выражение?
Как найти и заменить пути ссылок в нескольких файлах Excel сразу
3 ответа
Я предложил бы коммерческий продукт PowerGREP:
PowerGREP-мощный Windows grep инструмент. Быстрый поиск по большому количество файлов на вашем ПК или сеть, включая текстовую и двоичную файлы, сжатые архивы, MS Word документы, электронные таблицы Excel, PDF файлы, файлы OpenOffice и др. найти информация вы хотите с мощным текстовые шаблоны (регулярные выражения) указание формы, которую вы хотите, вместо буквального текста. найти и заменить С одним или много регулярн выражения к всесторонне ведение веб-сайтов, исходный код, отчеты и т. д. Извлечение статистики и знания из файлов журналов и больших набор данных.
здание от ответа TomWij все, перебрать все ячейки, ищу ссылки на "\FileSrv\\ Mehper_repository" и заменить "\FileSrv\Planning_reports\". Возможно, вы сможете использовать коллекцию ячеек, чтобы сделать это быстрее, но это может мешать формулам плохими способами (тем более, что эта строка не будет изолирована).
попробуйте спросить о написании VBA, как это на StackOverflow, вы, скорее всего, получите ответ, связанный с программированием, чем на суперпользователь.
макро-подход:
Я не могу точно ответить на этот вопрос, но как насчет использования макропрограммы, поэтому единственное, что вам нужно сделать, это открыть файлы один за другим и запустить макрос? Это может быть осуществимо, если коллекция не слишком велика, если нет, вам, вероятно, придется придумать программирования пользовательских решений...
Программирование пользовательского автоматического решения:
здание от ответа А. Scagnelli по , вы можете взять свой любимый язык .NET и сделать (Примеры c#):
- рекурсивно перечислить подкаталоги.
- перечислять каждый файл во всех найденных каталогах отфильтруйте расширение excel.
- автоматизация Microsoft Excel таким образом:http://support.microsoft.com/kb/302084
- и замените текст следующим образом:как я могу заменить текст в Excel Таблица?
псевдо код:
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 открытым в течение всего алгоритма, просто "открыть, заменить и закрыть" во внутреннем цикле.
Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]