Доброе время! Использовал данный макрос для автоматического обновления (по заданию Планировщика задания) данных в группе файлов .xls*, которая подтягивает данные (OLE-link) из множества связанных обновляющихся файлов-источников .doc и .docx.
При использовании кода:
[vba]
Код
Do While File <> "" With Workbooks.Open(Filename:=Папка & Имя, UpdateLinks:=3) ' здесь макрос делает открытие и обновление файлов в папке .Close SaveChanges:=True End With File = Dir Loop
[/vba]
столкнулся с проблемой, что файлы открываются, но данные по OLE ссылкам не обновляются. Чтобы автоматом обновлялись удаленные ссылки в цикл нужно добавить
[vba]
Код
.UpdateRemoteReferences = True
[/vba]
Мой итоговый макрос выглядит так:
[vba]
Код
Sub MyMacro With Application .ScreenUpdating = False ' обновление экрана .DisplayAlerts = False ' вывод системных сообщений .EnableEvents = False ' чтобы события не выполнялись .AskToUpdateLinks = False ' чтобы не появлялись запросы на обновления связей Report = "Полный путь к папке с файлами"
File = Dir(Report & "*.xls*") Do While File <> "" With Workbooks.Open(Filename:=Report & File) ' открытие файлов в папке по очереди .UpdateRemoteReferences = True ' обновление ссылок после открытия .Close SaveChanges:=True ' сохранение и закрытие End With File = Dir Loop .ScreenUpdating = True ' обновление экрана .DisplayAlerts = True ' вывод системных сообщений .EnableEvents = True ' выполнение событий .AskToUpdateLinks = True ' запросы на обновления связей End With End Sub
[/vba]
Может кому пригодится, так как ни на одном форуме я данное решение не нашел.
Доброе время! Использовал данный макрос для автоматического обновления (по заданию Планировщика задания) данных в группе файлов .xls*, которая подтягивает данные (OLE-link) из множества связанных обновляющихся файлов-источников .doc и .docx.
При использовании кода:
[vba]
Код
Do While File <> "" With Workbooks.Open(Filename:=Папка & Имя, UpdateLinks:=3) ' здесь макрос делает открытие и обновление файлов в папке .Close SaveChanges:=True End With File = Dir Loop
[/vba]
столкнулся с проблемой, что файлы открываются, но данные по OLE ссылкам не обновляются. Чтобы автоматом обновлялись удаленные ссылки в цикл нужно добавить
[vba]
Код
.UpdateRemoteReferences = True
[/vba]
Мой итоговый макрос выглядит так:
[vba]
Код
Sub MyMacro With Application .ScreenUpdating = False ' обновление экрана .DisplayAlerts = False ' вывод системных сообщений .EnableEvents = False ' чтобы события не выполнялись .AskToUpdateLinks = False ' чтобы не появлялись запросы на обновления связей Report = "Полный путь к папке с файлами"
File = Dir(Report & "*.xls*") Do While File <> "" With Workbooks.Open(Filename:=Report & File) ' открытие файлов в папке по очереди .UpdateRemoteReferences = True ' обновление ссылок после открытия .Close SaveChanges:=True ' сохранение и закрытие End With File = Dir Loop .ScreenUpdating = True ' обновление экрана .DisplayAlerts = True ' вывод системных сообщений .EnableEvents = True ' выполнение событий .AskToUpdateLinks = True ' запросы на обновления связей End With End Sub
[/vba]
Может кому пригодится, так как ни на одном форуме я данное решение не нашел.Tamplier88
Everythihg should be incredibly simpler.
Сообщение отредактировал Tamplier88 - Пятница, 27.03.2020, 16:13
Привет коллеги) Подскажите, что я делаю не так? У меня есть файл с настроенными пивотами на данные из кубов. Задача сделать файл с кнопкой, который откроет в фоновом режиме файл, все обновит и сохранит. В идеале, если не получится, то выдаст лог. И я сделаю себе файл с макросами и буду по кнопочке обновлять нужные файлы. А еще я загружу один файл в планировщик (пока не знаю как вы это все делаете) и он мне будет сам все обновлять. По факту я зашла в эксель, ввела в VB этот код. Он не ругается. Все ок. Нажимаю отработать макрос. И ничего не происходит. И файлы так и остались старыми. и еще Dir у меня не выделен другим цветом (как команда).
[vba]
Код
Sub MyMacro() With Application .ScreenUpdating = False ' обновление экрана .DisplayAlerts = False ' вывод системных сообщений .EnableEvents = False ' чтобы события не выполнились .AskToUpdateLinks = False ' чтобы не появлялись запросы на обновления связей Report = "N:\DEPARTMENTS\efficiency\Sales\Tracker — копия" ' полный путь к папке с файлами
File = Dir(Report & "*.xls*") Do While File <> "" With Workbooks.Open(Filename:=Report & File, UpdateLinks:=True) ' открытие файлов в папке по очереди .UpdateRemoteReferences = True ' обновление ссылок после открытия .Close SaveChanges:=True ' созданение и закрытие End With File = Dir Loop .ScreenUpdating = True ' обновление экрана .DisplayAlerts = True ' вывод системных сообщений .EnableEvents = True ' выполнение событий .AskToUpdateLinks = True ' запросы на обновление связей End With End Sub
[/vba]
Привет коллеги) Подскажите, что я делаю не так? У меня есть файл с настроенными пивотами на данные из кубов. Задача сделать файл с кнопкой, который откроет в фоновом режиме файл, все обновит и сохранит. В идеале, если не получится, то выдаст лог. И я сделаю себе файл с макросами и буду по кнопочке обновлять нужные файлы. А еще я загружу один файл в планировщик (пока не знаю как вы это все делаете) и он мне будет сам все обновлять. По факту я зашла в эксель, ввела в VB этот код. Он не ругается. Все ок. Нажимаю отработать макрос. И ничего не происходит. И файлы так и остались старыми. и еще Dir у меня не выделен другим цветом (как команда).
[vba]
Код
Sub MyMacro() With Application .ScreenUpdating = False ' обновление экрана .DisplayAlerts = False ' вывод системных сообщений .EnableEvents = False ' чтобы события не выполнились .AskToUpdateLinks = False ' чтобы не появлялись запросы на обновления связей Report = "N:\DEPARTMENTS\efficiency\Sales\Tracker — копия" ' полный путь к папке с файлами
File = Dir(Report & "*.xls*") Do While File <> "" With Workbooks.Open(Filename:=Report & File, UpdateLinks:=True) ' открытие файлов в папке по очереди .UpdateRemoteReferences = True ' обновление ссылок после открытия .Close SaveChanges:=True ' созданение и закрытие End With File = Dir Loop .ScreenUpdating = True ' обновление экрана .DisplayAlerts = True ' вывод системных сообщений .EnableEvents = True ' выполнение событий .AskToUpdateLinks = True ' запросы на обновление связей End With End Sub