Господа, помогите оптимизировать макрос на обновление данных в файлах. Макрос написал сам, но ВБА знаю плохо , изучаю около двух недель. Макрос очень часто не проходит ( выдает Debug на сохранениях файлов, при повторном запуске макрос проходит нормально), поэтому нужна помощь в оптимизации макроса.
Трам-тара-рам! Виктор Черный, а теперь сами попробуйте войти в тему как сторонний пользователь, как будто тема не Ваша. Нравится листать свое первое сообщение? Обратите внимание на файл в Вашем сообщении. Сравните размер места, занимаемого Вашим листингом в теме и места для файла.
При формировании текста сообщения его можно форматировать, длиннючие листинги можно помещать в текстовый файл. Но лучше: такие листинги должны быть в файле Excel, чтобы помогающие не помогали "на пальцах"!
Не верю, что вот это проходит нормально: Workbooks("Variable Cost Budget 2013.xlsb".Save
Нет закрывающей скобки - должна по идее быть ошибка синтаксиса. Все разгребать не очень хочется, но можно сократить открытие и закрытие файлов через массивы:
Код
Dim sPath As String, asFilesNames, li As Long
sPath = "D:\Budget\2012\Spg\Bags\Division\Distribution Spg\"
asFilesNames = Array("DS SPG BAGS WS ASIA 2013.xlsb", "DS SPG BAGS WS CIS 2013.xlsb", "DS SPG BAGS WS SPB 2013.xlsb")
For li = LBound(asFilesNames) To UBound(asFilesNames)
Workbooks.Open Filename:= _
sPath & asFilesNames(li), UpdateLinks:=0, Password:="", WriteResPassword:="", IgnoreReadOnlyRecommended:=True
Next li
'какие-то операции
For li = LBound(asFilesNames) To UBound(asFilesNames)
Workbooks(asFilesNames(li)).Close True'сохраняем в момент закрытия
Next li
На некоторые файлы Вы меняете пароль - для этого можно сделать отдельный массив с паролями.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
как надежнее? Так же интересно можно ли как - нибудь обновлять книгу через связи , чтоб не надо было открывать 5 книг для обновления 1 ? Макрос зпускается автомотически ночью.
Я не очень хорошо разбираюсь в VBA поэтому плохо понимаю как работет макрос с переменной. Проблема в том что файлов оч много и каждый обновляется в своей последовательности, окрыть все файлы сразу оч большая нагрузка на сервер( часто вылетает, да и по времени макрос ограничен) и практически каждый файл запоролен, а то и по 2 раза( пароли все разные).Есть 3 группы файлов spg pmp и history , хистори обновляет SPG , SPG обновляет PMP(PMP обновляет хистори), затем SPG онбовляет history . Основной вопрос как можно уменьшить время и нагрузку макроса. Чтобы понять сложный макрос, который может написать специалист VBA, мне понадобиться очень много времени, поэтому я и спрашиваю , есть ли какая-нибудть простая комнда в ВБА обновляющая связи.