powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Отключение и включение макросов
13 сообщений из 13, страница 1 из 1
Отключение и включение макросов
    #35719563
xymbo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!
На событии Before_Close я делаю следующее:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Application.EnableEvents = True

    Call Check_Fill_dates

    If IS_ERROR Then
        Cancel = True
        Application.EnableEvents = False
    End If
    
End Sub
Почему я делаю так: так как после Before Close выполняются встроенные макросы приложения, а потом уже Before_Save.
То есть алгоритм закрытия книги такой:
1. Before_Close
2. выполнение макросов приложения
3. Before_Save.
Теперь собственно вопрос, как мне потом включить Application.EnableEvents = True после Before_Close?
...
Рейтинг: 0 / 0
Отключение и включение макросов
    #35719968
_slan_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xymbo,
а в конце befor_close не катит?
...
Рейтинг: 0 / 0
Отключение и включение макросов
    #35720324
xymbo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_slan_xymbo,
а в конце befor_close не катит?
А если так поставлю, то будут выполняться макросы приложения.:( Не прокатит так.
...
Рейтинг: 0 / 0
Отключение и включение макросов
    #35721001
_slan_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xymbo,
не совсем понял

befor_close отрабатывает,..

cancel=true?

т.е. книга не закрывается?
так какие дальше идут события?
мож их обработку и посмотреть?

а так - или выключаешь или нет..

если выключил, то включить только вручную по-моему, хотя были слухи, что формулы условного форматирования срабатывают и при выключенных событиях и если определить функцию, кот включит события.. :)
...
Рейтинг: 0 / 0
Отключение и включение макросов
    #35721288
xymbo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_slan_,

Приложение такое(очень интегрированное с экселем), что после Before_close, обрабатывает свои макросы, я описывал алгоритм в первом посте. Ща получилось по таймеру потом включать, но опять же, столько обходных путей, да и не совсем до конца все это работает.
...
Рейтинг: 0 / 0
Отключение и включение макросов
    #35721518
_slan_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xymbo,
все это общие фразы - после обрабатываются макросы...

каким образом они запускаются?
какая-то надстройка? закрытая?
...
Рейтинг: 0 / 0
Отключение и включение макросов
    #35721618
xymbo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_slan_xymbo,
все это общие фразы - после обрабатываются макросы...

каким образом они запускаются?
какая-то надстройка? закрытая?
Да, стороннее приложение, код соответственно закрыт, имеет цифровую подпись.
...
Рейтинг: 0 / 0
Отключение и включение макросов
    #35726624
ZVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здесь Убрать кнопку Х, close из Excel еще кому-то мешает кнопка Close по той же причине :)

Задача: есть некая чужая надстройка, перехватывающая событие WorkbookBeforeClose для любой книги, которую пытаются закрыть. Задача – заблокировать это перехват. Если цель такой задачи аморальная, то все что ниже - не читать ( съесть :)

Особенности: о попытке закрытия книги Excel сообщает соответствующим событием сначала той книге, которая закрывается, и лишь затем – надстройкам (объектам класса с обработкой событий).

Метод: перехватить событие в книге, которую пытаются закрыть, отключить генерацию событий на время раздачи его надстройкам и сразу же включить.

Решение:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
' ZVI:2008-12-21 Создание события сразу после Workbook_BeforeClose.
' Исключается перехват события WorkbookBeforeClose надстройками.
' Весь код ниже нужно скопировать в модуль ЭтаКнига
Private Sub Workbook_BeforeClose(Cancel As Boolean)
  With Application
    ' Временно отключаем генерацию событий
    .EnableEvents = False
    ' Создаем виртуальное событие After BeforeClose :)
    .OnTime Now, "ЭтаКнига.EventsOn"
  End With
End Sub

' Включение событий
Private Sub EventsOn()
  Application.EnableEvents = True
  'MsgBox "EventsOn!"
End Sub
...
Рейтинг: 0 / 0
Отключение и включение макросов
    #35726688
ZVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поправка: чтобы исключить зацикливание, код Sub EventsOn() должен быть размещен в другой открытой книге, например, в книге личных макросов Personal.xls

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
' Этот код должен быть в модуль ЭтаКнига
Private Sub Workbook_BeforeClose(Cancel As Boolean)
  With Application
    ' Временно отключаем генерацию событий
    .EnableEvents = False
    ' Создаем виртуальное событие After BeforeClose :)
    .OnTime Now, Workbooks("Personal.xls").FullName & "!EventsOn"
  End With
End Sub

' А это скопировать в стандартный модуль скрытой книги Personal.xls
' Скрытие Personal.xls - из меню Окно - Скрыть
' Сохрание Personal.xls - из VBE
' Скопировать Personal.xls в папку Excel-автозапуска: XLSTART
Sub EventsOn()
  Application.EnableEvents = True
  'MsgBox "EventsOn!"
End Sub
...
Рейтинг: 0 / 0
Отключение и включение макросов
    #35727466
_slan_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZVI, а если выгрузить надстройку?
...
Рейтинг: 0 / 0
Отключение и включение макросов
    #35727929
ZVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_slan_ZVI, а если выгрузить надстройку?
1) Если XLA-надстройка, то Вы правы, _Slan_, действительно, можно отключить события и выгрузить надстройку. Если только с ней не требуется продолжать работу, но уже с другой книгой - думаю, что автору виднее.
2) Если XLL-надстройка, то так не получится - только через отключение надстройки, которое она может отловить по соответствующему событию.
3) Если COM-надстройка, то то же, что и в п.2
...
Рейтинг: 0 / 0
Отключение и включение макросов
    #35728925
xymbo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZVIПоправка: чтобы исключить зацикливание, код Sub EventsOn() должен быть размещен в другой открытой книге, например, в книге личных макросов Personal.xls

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
' Этот код должен быть в модуль ЭтаКнига
Private Sub Workbook_BeforeClose(Cancel As Boolean)
  With Application
    ' Временно отключаем генерацию событий
    .EnableEvents = False
    ' Создаем виртуальное событие After BeforeClose :)
    .OnTime Now, Workbooks("Personal.xls").FullName & "!EventsOn"
  End With
End Sub

' А это скопировать в стандартный модуль скрытой книги Personal.xls
' Скрытие Personal.xls - из меню Окно - Скрыть
' Сохрание Personal.xls - из VBE
' Скопировать Personal.xls в папку Excel-автозапуска: XLSTART
Sub EventsOn()
  Application.EnableEvents = True
  'MsgBox "EventsOn!"
End Sub

Да, спасибо.Что собственно и сделал Таймер
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Отключение и включение макросов
    #39953263
КД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Вот такой вопрос. При открытии книги запускается периодическое резервное копирование (OnTime). Соответственно, после закрытия оно уже не требуется, но продолжает выполняться пока открыт Excel.
Попробовал вставить в
Public Sub Workbook_BeforeClose(Cancel As Boolean)
...
Application.OnTime Now, "Backup_This_Workbook", False

ThisWorkbook.Save

End Sub
не получается так
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Отключение и включение макросов
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]