Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Массовая замена текста во всех файлах в папке и подпапке - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Manyasha, SLAVICK, китин  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Массовая замена текста во всех файлах в папке и подпапке (Макросы/Sub)
Массовая замена текста во всех файлах в папке и подпапке
Anis625 Дата: Воскресенье, 07.03.2021, 14:36 | Сообщение № 1
Группа: Проверенные
Ранг: Ветеран
Сообщений: 518
Репутация: 27 ±
Замечаний: 0% ±

Excel 2013
Добрый день, всем участникам форума!

Снова с просьбой направить или послать (шучу) на путь истинный в познаниях VBA.
Общий сетевой диск переезжает на новый сервер. А в некоторых файлах есть линки между собой соответственно они будут на старый сетевой диск. Вот и решили сделать массовую замену пути изменив его начальную часть.
Вопрос не новый поэтому поискал в просторах интернета. Нашел на дружественных (надеюсь) сайтах (ссылки добавил в начало кода) почти подходящее решение (один код перебирает папки и подпапки, а другой - находит и заменяет текст по всей открытой книге). И их нужно было поженить между собой. В этом и затык. По отдельности работают, а как думал правильно соединил не работают, но и ошибку не выдает.
Также прикрутил код отключения обновления связей - тоже не срабатывает - выводит сообщение об обновлении.
Файлы: VBA_change (с кодами) и Test1 - условный файл который поместил в условную папку

Буду признателен за совет и сдействие
К сообщению приложен файл: VBA_change.xlsm(16.7 Kb) · Test1.xlsx(9.7 Kb)
 
Ответить
СообщениеДобрый день, всем участникам форума!

Снова с просьбой направить или послать (шучу) на путь истинный в познаниях VBA.
Общий сетевой диск переезжает на новый сервер. А в некоторых файлах есть линки между собой соответственно они будут на старый сетевой диск. Вот и решили сделать массовую замену пути изменив его начальную часть.
Вопрос не новый поэтому поискал в просторах интернета. Нашел на дружественных (надеюсь) сайтах (ссылки добавил в начало кода) почти подходящее решение (один код перебирает папки и подпапки, а другой - находит и заменяет текст по всей открытой книге). И их нужно было поженить между собой. В этом и затык. По отдельности работают, а как думал правильно соединил не работают, но и ошибку не выдает.
Также прикрутил код отключения обновления связей - тоже не срабатывает - выводит сообщение об обновлении.
Файлы: VBA_change (с кодами) и Test1 - условный файл который поместил в условную папку

Буду признателен за совет и сдействие

Автор - Anis625
Дата добавления - 07.03.2021 в 14:36
Anis625 Дата: Воскресенье, 07.03.2021, 14:46 | Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 518
Репутация: 27 ±
Замечаний: 0% ±

Excel 2013
С изменением текста разобрался: вшил код замены текста в основной код и добавил ссылку на открытую книгу wb.
Но сообщения о необходимости обновить связи выходят. Если получится допилить может кому пригодиться готовый код
К сообщению приложен файл: 9454535.xlsm(16.9 Kb)


Сообщение отредактировал Anis625 - Воскресенье, 07.03.2021, 14:56
 
Ответить
СообщениеС изменением текста разобрался: вшил код замены текста в основной код и добавил ссылку на открытую книгу wb.
Но сообщения о необходимости обновить связи выходят. Если получится допилить может кому пригодиться готовый код

Автор - Anis625
Дата добавления - 07.03.2021 в 14:46
doober Дата: Воскресенье, 07.03.2021, 15:03 | Сообщение № 3
Группа: Друзья
Ранг: Ветеран
Сообщений: 736
Репутация: 285 ±
Замечаний: 0% ±

Excel 2010
или послать
Желаете?
Запросто. Если так файл открыть :D [vba]
Код
  Set wb = Application.Workbooks.Open(sFolder & sFiles, UpdateLinks = xlUpdateLinksAlways)
        
[/vba]


 
Ответить
Сообщение
или послать
Желаете?
Запросто. Если так файл открыть :D [vba]
Код
  Set wb = Application.Workbooks.Open(sFolder & sFiles, UpdateLinks = xlUpdateLinksAlways)
        
[/vba]

Автор - doober
Дата добавления - 07.03.2021 в 15:03
Anis625 Дата: Воскресенье, 07.03.2021, 15:14 | Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 518
Репутация: 27 ±
Замечаний: 0% ±

Excel 2013
doober,
Желаете?

Нет уж :D , если бы совсем без какого-нибудь решения пришел с вопросом думаю можно было бы =)
Если так файл открыть

То что нужно получилось. Учить и учить мне VBA, как вы как то правильно сказали на практике.
Спасибо Вам огромное
 
Ответить
Сообщениеdoober,
Желаете?

Нет уж :D , если бы совсем без какого-нибудь решения пришел с вопросом думаю можно было бы =)
Если так файл открыть

То что нужно получилось. Учить и учить мне VBA, как вы как то правильно сказали на практике.
Спасибо Вам огромное

Автор - Anis625
Дата добавления - 07.03.2021 в 15:14
Anis625 Дата: Воскресенье, 07.03.2021, 15:25 | Сообщение № 5
Группа: Проверенные
Ранг: Ветеран
Сообщений: 518
Репутация: 27 ±
Замечаний: 0% ±

Excel 2013
doober,
Попробовал сделать тоже самое с кодом при переборе не только папки, но и подпапок (в модуле код) ругается на эту строку:
[vba]
Код
Set wb = Application.Workbooks.Open(sPath & objFile.Name, UpdateLinks = xlUpdateLinksAlways)
[/vba]
К сообщению приложен файл: 6057601.xlsm(17.0 Kb)


Сообщение отредактировал Anis625 - Воскресенье, 07.03.2021, 15:25
 
Ответить
Сообщениеdoober,
Попробовал сделать тоже самое с кодом при переборе не только папки, но и подпапок (в модуле код) ругается на эту строку:
[vba]
Код
Set wb = Application.Workbooks.Open(sPath & objFile.Name, UpdateLinks = xlUpdateLinksAlways)
[/vba]

Автор - Anis625
Дата добавления - 07.03.2021 в 15:25
Anis625 Дата: Воскресенье, 07.03.2021, 15:40 | Сообщение № 6
Группа: Проверенные
Ранг: Ветеран
Сообщений: 518
Репутация: 27 ±
Замечаний: 0% ±

Excel 2013
Получилось решить задачку так:
[vba]
Код
Set wb = Application.Workbooks.Open(sPath & objFile.Name, UpdateLinks:=0)
[/vba]


Сообщение отредактировал Anis625 - Воскресенье, 07.03.2021, 15:41
 
Ответить
СообщениеПолучилось решить задачку так:
[vba]
Код
Set wb = Application.Workbooks.Open(sPath & objFile.Name, UpdateLinks:=0)
[/vba]

Автор - Anis625
Дата добавления - 07.03.2021 в 15:40
Anis625 Дата: Воскресенье, 07.03.2021, 15:43 | Сообщение № 7
Группа: Проверенные
Ранг: Ветеран
Сообщений: 518
Репутация: 27 ±
Замечаний: 0% ±

Excel 2013
doober,
Но сообщения "Будьте внимательный! В фале могут быть персональные данные ..." остались.
Пытался вылечить так:
[vba]
Код
Application.DisplayAlerts = False
Application.EnableEvents = False
[/vba]
Не помогает
 
Ответить
Сообщениеdoober,
Но сообщения "Будьте внимательный! В фале могут быть персональные данные ..." остались.
Пытался вылечить так:
[vba]
Код
Application.DisplayAlerts = False
Application.EnableEvents = False
[/vba]
Не помогает

Автор - Anis625
Дата добавления - 07.03.2021 в 15:43
Anis625 Дата: Воскресенье, 07.03.2021, 15:45 | Сообщение № 8
Группа: Проверенные
Ранг: Ветеран
Сообщений: 518
Репутация: 27 ±
Замечаний: 0% ±

Excel 2013
Не там ставил. Все получилось сделать.
Сейчас причешу и выложу финальный файл. Может кому пригодится
 
Ответить
СообщениеНе там ставил. Все получилось сделать.
Сейчас причешу и выложу финальный файл. Может кому пригодится

Автор - Anis625
Дата добавления - 07.03.2021 в 15:45
Anis625 Дата: Воскресенье, 07.03.2021, 15:56 | Сообщение № 9
Группа: Проверенные
Ранг: Ветеран
Сообщений: 518
Репутация: 27 ±
Замечаний: 0% ±

Excel 2013
Финальный файл (добавил отключение/включение автоматического режима пересчета формул в начале и конце, чтобы быстрее отрабатывал код на больших размерах файлах). Спасибо большое doober,
К сообщению приложен файл: 6767917.xlsm(20.6 Kb)


Сообщение отредактировал Anis625 - Воскресенье, 07.03.2021, 15:57
 
Ответить
СообщениеФинальный файл (добавил отключение/включение автоматического режима пересчета формул в начале и конце, чтобы быстрее отрабатывал код на больших размерах файлах). Спасибо большое doober,

Автор - Anis625
Дата добавления - 07.03.2021 в 15:56
doober Дата: Воскресенье, 07.03.2021, 16:36 | Сообщение № 10
Группа: Друзья
Ранг: Ветеран
Сообщений: 736
Репутация: 285 ±
Замечаний: 0% ±

Excel 2010
Не за что.
UpdateLinks:=0

Я бы 0 не догадался поставить.


 
Ответить
СообщениеНе за что.
UpdateLinks:=0

Я бы 0 не догадался поставить.

Автор - doober
Дата добавления - 07.03.2021 в 16:36
Anis625 Дата: Воскресенье, 07.03.2021, 17:37 | Сообщение № 11
Группа: Проверенные
Ранг: Ветеран
Сообщений: 518
Репутация: 27 ±
Замечаний: 0% ±

Excel 2013
doober,
В мануале посмотрел. Вот и Вас научил чему то новому :D
 
Ответить
Сообщениеdoober,
В мануале посмотрел. Вот и Вас научил чему то новому :D

Автор - Anis625
Дата добавления - 07.03.2021 в 17:37
Anis625 Дата: Вторник, 09.03.2021, 11:08 | Сообщение № 12
Группа: Проверенные
Ранг: Ветеран
Сообщений: 518
Репутация: 27 ±
Замечаний: 0% ±

Excel 2013
Еще раз добрый день, всем участникам форума!
Код работает отлично, только как же без НО при тестировании на продуктиве =)
Столкнулся с такой ситуацией, что при замене пути к папке Excel автоматически пытается обновить связь и выдает #ССЫЛКА если не находит путь.
Автоматический пересчет формул пробовал отключить - не помогает.
Можно ли как то сделать чтобы замена была без обновления связи после замены?


Сообщение отредактировал Anis625 - Вторник, 09.03.2021, 11:15
 
Ответить
СообщениеЕще раз добрый день, всем участникам форума!
Код работает отлично, только как же без НО при тестировании на продуктиве =)
Столкнулся с такой ситуацией, что при замене пути к папке Excel автоматически пытается обновить связь и выдает #ССЫЛКА если не находит путь.
Автоматический пересчет формул пробовал отключить - не помогает.
Можно ли как то сделать чтобы замена была без обновления связи после замены?

Автор - Anis625
Дата добавления - 09.03.2021 в 11:08
Anis625 Дата: Вторник, 09.03.2021, 11:20 | Сообщение № 13
Группа: Проверенные
Ранг: Ветеран
Сообщений: 518
Репутация: 27 ±
Замечаний: 0% ±

Excel 2013
Так тоже пробовал[vba]
Код
sh.Cells.Replace "C:\Users\User\Downloads\Новая папка", "C:\Users\User\Downloads\Новая папка2"
            Application.AskToUpdateLinks = False
[/vba] не помогает
 
Ответить
СообщениеТак тоже пробовал[vba]
Код
sh.Cells.Replace "C:\Users\User\Downloads\Новая папка", "C:\Users\User\Downloads\Новая папка2"
            Application.AskToUpdateLinks = False
[/vba] не помогает

Автор - Anis625
Дата добавления - 09.03.2021 в 11:20
Anis625 Дата: Вторник, 09.03.2021, 14:07 | Сообщение № 14
Группа: Проверенные
Ранг: Ветеран
Сообщений: 518
Репутация: 27 ±
Замечаний: 0% ±

Excel 2013
Как вариант если это кодом можно прописать при выводе такого окна - не заменять на новое значение. Но это не знаю как сделать =(
 
Ответить
СообщениеКак вариант если это кодом можно прописать при выводе такого окна - не заменять на новое значение. Но это не знаю как сделать =(

Автор - Anis625
Дата добавления - 09.03.2021 в 14:07
Anis625 Дата: Среда, 10.03.2021, 06:28 | Сообщение № 15
Группа: Проверенные
Ранг: Ветеран
Сообщений: 518
Репутация: 27 ±
Замечаний: 0% ±

Excel 2013
Все в интернете перерыл, чтобы хоть за что то зацепиться. В 2015 году на этом форуме тоже поднимали этот вопрос- без решения он остался. Неужели не решаемая задачка.
 
Ответить
СообщениеВсе в интернете перерыл, чтобы хоть за что то зацепиться. В 2015 году на этом форуме тоже поднимали этот вопрос- без решения он остался. Неужели не решаемая задачка.

Автор - Anis625
Дата добавления - 10.03.2021 в 06:28
Pelena Дата: Среда, 10.03.2021, 09:40 | Сообщение № 16
Группа: Админы
Ранг: Местный житель
Сообщений: 17440
Репутация: 3873 ±
Замечаний: ±

Excel 2010, 2016 & Mac Excel
если не находит путь
что имеется в виду: нет такой папки или нет в ней такого файла?
Если нет папки, то её просто можно создать до цикла по листам.
[vba]
Код
             On Error Resume Next
            MkDir "C:\Users\User\Downloads\Новая папка2"
[/vba]
Если нет файла, то ошибка #ССЫЛКА! исчезнет, как только Вы положите в эту папку нужный файл.


"Черт возьми, Холмс! Но как??!!"
ЯД 41001765434816
 
Ответить
Сообщение
если не находит путь
что имеется в виду: нет такой папки или нет в ней такого файла?
Если нет папки, то её просто можно создать до цикла по листам.
[vba]
Код
             On Error Resume Next
            MkDir "C:\Users\User\Downloads\Новая папка2"
[/vba]
Если нет файла, то ошибка #ССЫЛКА! исчезнет, как только Вы положите в эту папку нужный файл.

Автор - Pelena
Дата добавления - 10.03.2021 в 09:40
Anis625 Дата: Среда, 10.03.2021, 10:39 | Сообщение № 17
Группа: Проверенные
Ранг: Ветеран
Сообщений: 518
Репутация: 27 ±
Замечаний: 0% ±

Excel 2013
Pelena,
Файлы могут содержать ссылку на файл который был перемещен (это исключение, но такие увы есть). При замене у них ссылки выходит #ССЫЛКА. По ним не нужно менять ссылку. В идеале было бы если макрос просто меняет путь в формуле без обновления. Я думал это так работает. А оказывается он сразу пытается обновить связь.
Возвращать на место файл тоже вряд ли кто будет. Их сотни (среди тысяч)


Сообщение отредактировал Anis625 - Среда, 10.03.2021, 10:40
 
Ответить
СообщениеPelena,
Файлы могут содержать ссылку на файл который был перемещен (это исключение, но такие увы есть). При замене у них ссылки выходит #ССЫЛКА. По ним не нужно менять ссылку. В идеале было бы если макрос просто меняет путь в формуле без обновления. Я думал это так работает. А оказывается он сразу пытается обновить связь.
Возвращать на место файл тоже вряд ли кто будет. Их сотни (среди тысяч)

Автор - Anis625
Дата добавления - 10.03.2021 в 10:39
Pelena Дата: Среда, 10.03.2021, 10:52 | Сообщение № 18
Группа: Админы
Ранг: Местный житель
Сообщений: 17440
Репутация: 3873 ±
Замечаний: ±

Excel 2010, 2016 & Mac Excel
могут содержать ссылку на файл который был перемещен
но тогда ведь искомый фрагмент (что меняем) будет уже другим и не попадёт под замену. Или я что-то не так понимаю.
Я к тому, что ошибка #ССЫЛКА! может уже была до выполнения макроса


"Черт возьми, Холмс! Но как??!!"
ЯД 41001765434816
 
Ответить
Сообщение
могут содержать ссылку на файл который был перемещен
но тогда ведь искомый фрагмент (что меняем) будет уже другим и не попадёт под замену. Или я что-то не так понимаю.
Я к тому, что ошибка #ССЫЛКА! может уже была до выполнения макроса

Автор - Pelena
Дата добавления - 10.03.2021 в 10:52
Anis625 Дата: Среда, 10.03.2021, 14:28 | Сообщение № 19
Группа: Проверенные
Ранг: Ветеран
Сообщений: 518
Репутация: 27 ±
Замечаний: 0% ±

Excel 2013
Я к тому, что ошибка #ССЫЛКА! может уже была до выполнения макроса

Она может появиться если обновить связи. Но на входе обновление связей отключено и обновляются в ручную. Если бы связей было бы 100 можно и в ручную, а их несколько тысяч. И после замены пути в файлах хотелось чтобы ссылки по прежнему не обновлялись, а только в ручном режиме пользователем. Но до этого массово меняем по всем файлам Excel связи на новый сетевой диск.
 
Ответить
Сообщение
Я к тому, что ошибка #ССЫЛКА! может уже была до выполнения макроса

Она может появиться если обновить связи. Но на входе обновление связей отключено и обновляются в ручную. Если бы связей было бы 100 можно и в ручную, а их несколько тысяч. И после замены пути в файлах хотелось чтобы ссылки по прежнему не обновлялись, а только в ручном режиме пользователем. Но до этого массово меняем по всем файлам Excel связи на новый сетевой диск.

Автор - Anis625
Дата добавления - 10.03.2021 в 14:28
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Массовая замена текста во всех файлах в папке и подпапке (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс цитирования Jobsora jooble
© 2010-2021 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!