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

Вход

Регистрация

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

 

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

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

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
Группа: Заблокированные
Ранг: Ветеран
Сообщений: 674
Репутация: 31 ±
Замечаний: 20% ±

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
Группа: Друзья
Ранг: Ветеран
Сообщений: 947
Репутация: 323 ±
Замечаний: 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
Группа: Заблокированные
Ранг: Ветеран
Сообщений: 674
Репутация: 31 ±
Замечаний: 20% ±

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

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

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

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

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

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

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
Группа: Заблокированные
Ранг: Ветеран
Сообщений: 674
Репутация: 31 ±
Замечаний: 20% ±

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
Группа: Заблокированные
Ранг: Ветеран
Сообщений: 674
Репутация: 31 ±
Замечаний: 20% ±

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
Группа: Заблокированные
Ранг: Ветеран
Сообщений: 674
Репутация: 31 ±
Замечаний: 20% ±

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

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

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
Группа: Друзья
Ранг: Ветеран
Сообщений: 947
Репутация: 323 ±
Замечаний: 0% ±

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

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


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

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

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

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

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

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


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

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

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
Группа: Заблокированные
Ранг: Ветеран
Сообщений: 674
Репутация: 31 ±
Замечаний: 20% ±

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

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

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

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

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


"Черт возьми, Холмс! Но как??!!"
Ю-money 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
Группа: Заблокированные
Ранг: Ветеран
Сообщений: 674
Репутация: 31 ±
Замечаний: 20% ±

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


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

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

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


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

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

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

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

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

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

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