Страницы: 1
RSS
макрос закрытия всех файлов по событию открытия файла
 
Уезжаю в отпуск, стоит задача автоматизировать выполнение своих функций.
В программировании на VBA я полный профан, но мне хорошо удается  подбирать и комбинировать подходящие мне решения. Свои обязанности я автоматизировал частично макросами, частично через .bat и powershell
Все получилось, но не могу сделать последний штрих. Закрыть файл с исходной базой перед усыпление компьютера.
нашел в сети такой макрос:
Код
Sub yy()
Application.Quit
End Sub
Он крайне эффективно закрывает все файлы Excel. И запускаю я его через Powershell. Но как мне повесить его на событие открытия файла?
Изменено: Алексей Рубцов - 08.07.2019 10:40:31
 
Алексей Рубцов, Добрый день. тыц и тыц
Изменено: Wild.Godlike - 08.07.2019 10:44:45
 
Перед тем, как задать вопрос, сделал такую конструкцию:
Код
Private Sub Workbook_Open()
Application.Quit
End Sub
Не работает. Файл закрывает сам себя, не трогая остальные.

Код
Private Sub Workbook_Open()
Sub yy()
Application.Quit
End Sub
А вот такое вообще не работает.
Изменено: Алексей Рубцов - 08.07.2019 10:54:28
 
Так Вам что закрыть надо? Все файлы кроме того, из которого макрос запускается? Или Excel в принципе?
Если первое, то попробуйте так
Код
Private Sub Workbook_Open()
Dim iWb As Workbook
On Error Resume Next
Application.DisplayAlerts = False
Application.ScreenUpdating = False
For Each iWb In Workbooks
    If iWb.Name <> ThisWorkbook.Name Then
        iWb.Close True 'False - закроет без сохранения
    End If
Next
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
Изменено: Sanja - 08.07.2019 11:52:13
Согласие есть продукт при полном непротивлении сторон
 
Application.Quit в разных версиях Excel ведет себя по разному.
Сейчас точно не помню все тонкости, но код, работающий в 2010, в 2016 работать отказался, пришлось химичить.
 
Мне надо закрыть все книги. Включая ту, где находится мой код:
Код
Sub yy()
Application.Quit
End Sub
А код закрывает все книги, кроме нее. У меня Office 2016
Изменено: Алексей Рубцов - 08.07.2019 12:58:55
 
В 2010м закрываются все книги, включая ту, из которой был вызов процедуры
Согласие есть продукт при полном непротивлении сторон
 
Решил все иным образом.Исходная база теперь закрывается командой через .bat файл
Код
@echo on
taskkill /f /im excel.exe
Изменено: Алексей Рубцов - 08.07.2019 13:09:39
Страницы: 1
Наверх