Страницы: 1
RSS
Замена строки макроса в нескольких документах
 
Очень нужна помощь!!!
Был создан макрос для создания документов, после создания он создавал лист в книге и сбрасывал данные в отдельный  реестр. Далее на каждую позицию был создан отдельный документ(их более 200 уже) и закинут в папку с сотней папок . В данный момент поменяли сервер и адрес для архива не подходит.
Возможно ли по средствам VBA исправить макрос(изменить строку с ссылкой) в нескольких документах сразу не открывая их
 
Цитата
VladLuch написал:
не открывая их
нельзя
Соблюдение правил форума не освобождает от модераторского произвола
 
Цитата
buchlotnik написал:
нельзя
а если указывая в каком документе и как через замену что и на что
 
Цитата
VladLuch написал:
указывая в каком документе
можно и не указывая - в цикле проходить файлы из папок; проблема в вашем нежелании читать правила форума, в частности, в отсутствии примера
Соблюдение правил форума не освобождает от модераторского произвола
 
Цитата
buchlotnik написал:
можно и не указывая - в цикле проходить файлы из папок; проблема в вашем нежелании читать правила форума, в частности, в отсутствии примера
вот одни из файлов
в конце имеется строчка с ссылкой на другой файл
Workbooks.Open FileName:="\\nova44\PUB 40\12. Входной контроль\Общий отчет\General_report.xlsx"
а на данный момент необходимо сделать замену на
Workbooks.Open FileName:="Z:\12. Входной контроль\12. Входной контроль\Общий отчет\General_report.xlsx"
проблема в том что таких файлов очень много, есть папка с подпапками и в каждой от 1 до 3 таких файлов
но суть то не в примере а именно как исправить одну строчку в нескольких однотипных макросах
 
Сделать возможно, но нужно макросам разрешать доступ к проекту VBA, стандартно/обычно это запрещено.
Но пример кода сходу не нашёл (помню у Климова было много, но сайта больше нет на старом месте), на память не напишу...
P.S. Нашёл:
http://www.msoffice-nm.ru/faq/macros/module.htm#faq711
И там же чуть повыше:
Код
Для того, чтобы заменить одну строку программы на другую, достаточно использовать следующий пример :
ActiveWorkbook.VBProject.VBComponents(1).CodeModule.ReplaceLine 1, "Private Sub Workbook_Activate()"
В данном примере предполагается, что замена будет осуществляться в модуле с индексом(номером) один активной рабочей книги, где первая строка, которая и подлежит замене, содержит имя события, например, Private Sub Workbook_Open()
Изменено: Hugo - 18.09.2019 08:40:31
Страницы: 1
Наверх