|
Onkey в Excel при доступе из VB.NET
|
|||
---|---|---|---|
#18+
Пытаюсь через VB.NET наладить обработку событий нажатия клавиш в книге Excel, че Public WithEvents xlApp As New Excel.Application Public WithEvents xlBaza As Excel.Workbook Sub openExcel xlBaza = xlApp.Workbooks.Open(C:\Книга.xls) xlApp.OnKey("{e}", "press_e") End Sub Sub press_e MsgBox("Нажата клавиша 'е') End Sub Этот код вызывает ошибку с соообщением об отсутствии макроса "press_e". Причина мне понятна: программа ищет макрос в эксцеле, а не в VB.NET. Но может всё-таки есть возможность каким-то образом завязать OnKey на подпрограмму, записанную в коде VB.NET? Или найти другой способ отслеживания из VB.NET событий нажатия клавиш в Excel? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2012, 17:20 |
|
Onkey в Excel при доступе из VB.NET
|
|||
---|---|---|---|
#18+
Zaharius, Если альтернативный способ использовать, то например через GetAyncKeyState отлавливать нажатия клавиш - минус в том что работает глобально, а не для приложения Excel. Если через OnKey - то есть вариант, пока пытаюсь сделать: 1) Сделать в приложении VB.NET класс (COM класс аттрибут указать) в котором реализовать метод Press_E(), в VBA через xlApp.Run "InitWrapper", objClass <-- передать ссылку в макрос на COM класс. 2) В OnKey вызывается процедура в VBA Sub Press_e() и в ней реализовать уже вызов objClass.Press_E() Читал что .NET предоставляет COM интерфейсы для работы в клиентском приложении через враппер. В данном случае вызов через IDispatch будет, и скорее всего его в своём же классе его нужно реализовать. Можно почитать тут , пока писал нашёл статейку. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2012, 09:48 |
|
|
start [/forum/topic.php?fid=60&msg=38034123&tid=2157331]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
30ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
others: | 17ms |
total: | 124ms |
0 / 0 |