Как вызвать в конце события из другой рабочей книги - PullRequest
0 голосов
/ 16 ноября 2018

У меня есть рабочая книга (A), которая выполняет правдоподобные проверки, инициируемые при открытии события. Теперь я хочу написать другое макро, помещенное в другую рабочую книгу (B), которое открывает рабочую книгу A, ждет, пока не будут выполнены вероятные проверки, и если все в порядке, я хочу отсортировать данные и скопировать подмножество.

У кого-нибудь есть идеи, можно ли это сделать и как? Я не могу предоставить никакого кода для этого, так как у меня даже нет подхода.

1 Ответ

0 голосов
/ 16 ноября 2018

Не уверен, что это будет соответствовать вашим потребностям, но это моя идея:

Изменения в Рабочая книга A : Переместите проверку правдоподобия в WB a в функцию, которая возвращает логическую сигнализациюесли все в порядке.Эта функция должна быть в модуле и должна быть объявлена ​​как public.

Function CheckPlausibility() as Boolean
    (...do your checks here)
    CheckPlausibility = True  ' Or False
End Function

При открытии рабочей книги вызовите эту функцию и отреагируйте на результат («блокировка»)

Private Sub Workbook_Open()
    If not CheckPlausibility then
       (...Disable code)
    End If
End Sub

В Рабочая книга B : установите Application.EnableEvents = False перед открытием Workbook A - это не позволит выполнить Open -код.Вы можете вызвать любую общедоступную подпрограмму или функцию, являющуюся частью модуля, через Application.Run (есть другой способ, ссылаясь на книгу A в книге B, но это склеит эти книги вместе, и A будет открываться в любое время автоматически при открытии B).

const wbName = "C:\temp\A.xlsm"
Dim wb as Workbook, wbAIsOkay as Boolean 
Application.EnableEvents = False
Set wb = Workbooks.Open(wbName)
wbAIsOkay = Application.Run(wbName & "!CheckMe")
Application.EnableEvents = True
If wbAIsOkay Then 
   (...)
End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...