Желание вызвать обработчик события Click
означает одно: вы смотрите на макрос, который реализован в самом обработчике события.
Убери это. Обработчики вызываются их источником события; вызывать их «вручную» - ужасная практика; ты не хочешь этого делать. Не говоря уже о том, что обработчики могут существовать только в модуле класса, а это значит, что вам необходимо получить экземпляр объекта этого класса, чтобы иметь возможность найти его открытые члены - его private членам будет еще сложнее добраться. Если вам повезло, этот класс является модулем рабочего листа, поэтому вы бесплатно получаете его экземпляр рабочей области.
В любом случае, последнее, что вы хотите сделать, это «просто сделать обработчик Public
» и вызвать его напрямую. Refactor вместо:
Private Sub CommandButton2_Offline_Click()
GoOffline
End Sub
В идеале вы бы поместили метод в стандартный модуль:
Public Sub GoOffline()
'...
' all the code that's currently in CommandButton2_Offline_Click
'...
End Sub
Таким образом, все, что вам нужно сделать, это вызвать Application.Run
с "ModuleName.GoOffline"
в качестве аргумента из вашего кода .NET.
Что касается создания экземпляра рабочей книги , для этого есть фабричный метод: Workbooks.Open
- в вашем .NET-коде должен быть экземпляр Excel.Application
для работы.