Ребята, всем привет! Помогите доработать макрос. Я его нашел на просторах интернета, добавил к своей Книге - работает, но есть нюансы.
Изначальная задача: при открытии Альфа-Книги необходимо в фоновом режиме открыть все Книги в Папке, сохранить изменения и закрыть.
Тестовый запуск показал, что файлы открываются, сохраняются и закрываются нормально. Но только до тех пор, пока не случается ситуация, когда один из файлов в Папке уже кем-то открыт. Тогда работа макроса приостанавливается с запросом сохранения данного файла.
Как бы мне сделать так, чтобы макрос пропускал файлы, если они в данный момент уже открыты?
Если для этого нужно полностью изменить конструкцию макроса - я не против. Файлов в Папке небольшое количество - около 10шт, т.е. даже без изящных циклов LOOP можно, например, просто подряд записать команды для каждого из файлов. Да, топорно, но главное, чтобы работало.
Изначальная задача: при открытии Альфа-Книги необходимо в фоновом режиме открыть все Книги в Папке, сохранить изменения и закрыть.
Тестовый запуск показал, что файлы открываются, сохраняются и закрываются нормально. Но только до тех пор, пока не случается ситуация, когда один из файлов в Папке уже кем-то открыт. Тогда работа макроса приостанавливается с запросом сохранения данного файла.
Как бы мне сделать так, чтобы макрос пропускал файлы, если они в данный момент уже открыты?
Если для этого нужно полностью изменить конструкцию макроса - я не против. Файлов в Папке небольшое количество - около 10шт, т.е. даже без изящных циклов LOOP можно, например, просто подряд записать команды для каждого из файлов. Да, топорно, но главное, чтобы работало.
| Код |
|---|
Sub update() With Application 'операции с приложением/отключаем для повышения скорости работы макроса .ScreenUpdating = False 'обновление экрана .DisplayAlerts = False 'вывод системных сообщений Папка = "C:\Test\" '------------ Excel-файлы в этой папке ------------------ Имя = Dir(Папка & "*.xlsx") Do While Имя <> "" With .Workbooks.Open _ (Filename:=Папка & Имя, UpdateLinks:=True) 'здесь Ваш макрос делает свое грязное дело .Close SaveChanges:=True End With Имя = Dir Loop .ScreenUpdating = True 'обновление экрана .DisplayAlerts = True 'вывод системных сообщений End With End Sub |
Изменено: - 23.03.2023 11:52:00