|
Excel VBA не любит Access, ...
|
|||
---|---|---|---|
#18+
... или у меня сегодня лыжи не едут? Пытался в качестве библиотеки EXCEL VBA проекта подключить MDB-шку, говорит невкусно! Ладно, подключил библиотеку Access, далее: Код: vbnet 1. 2. 3. 4. 5. 6.
Access, форма открываются, вопросов нет. А вот при попытке подписаться на события интерфейса Form: Код: vbnet 1.
опять получаю фиг вам на строке: Код: vbnet 1.
Без подписки на события - все гуд. (модуль правильный) Как побороть сию напасть? Нужно в лист книги данные возвернуть в три не смежные ячейки. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2016, 01:16 |
|
Excel VBA не любит Access, ...
|
|||
---|---|---|---|
#18+
Predeclared, добрый вечер Попробовал связку в Access 2010 + Excel 2010. В Excel поставил ссылку на библиотеку Access 14. В модуль листа положил код: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
По закрытии формы сработал перехват события frm_Close. Наверно вопрос излишний, но все же: Private WithEvents frm As Access.Form должно быть в модуле класса. Не в этом дело? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2016, 03:04 |
|
Excel VBA не любит Access, ...
|
|||
---|---|---|---|
#18+
забыл сказать, в той форме, на обработчик закрытия которой я подписался, OnClose должен быть установлен в "[Event Procedure]". иначе действительно событие не вызывается на mdb тоже проверил - работает ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2016, 03:21 |
|
Excel VBA не любит Access, ...
|
|||
---|---|---|---|
#18+
Сергей, доброго утра. Вот ведь в чем и засада. И модуль правильный, и у формы модуль имеется, и "[Event Procedure]" на OnClose имеется, а лыжи не едут. :) Automation Error на Set frm=..., и хоть ты тресни. Я уж и Excel-евский файлик поменял, и Access-ный на пустышку с одной формой. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2016, 05:29 |
|
Excel VBA не любит Access, ...
|
|||
---|---|---|---|
#18+
Проверил на виртуалке с 2007 - работает. Значит у меня офис приболел. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2016, 05:35 |
|
Excel VBA не любит Access, ...
|
|||
---|---|---|---|
#18+
Predeclared, вот, вспомнил, давно дело было :) когда писали в 2000-ом, то при работе с библиотечной базой, были какие-то проблемы, если имя проекта(не имя файла, а именно именно имя проекта - то, что задается в редакторе кода в свойствах) было указано на русском. Проблемы исчезали, если не использовать кириллицу. По-моему, это как раз тот случай. В 2010-ом сейчас этого не наблюдаю, но тогда было. Кстати, проекты скомпилированы? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2016, 11:52 |
|
Excel VBA не любит Access, ...
|
|||
---|---|---|---|
#18+
Эти хохмочки я еще пока помню :) Имена проектов разные, оба на аглицком, скомпилированы. Имена модулей не пересекаются с именами проектов. Даже имена листов и модулей листов переписал по-аглицки. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2016, 12:53 |
|
Excel VBA не любит Access, ...
|
|||
---|---|---|---|
#18+
Predeclared, да, не понятно. Вроде уже ни к чему не придерешься. ну раз что попробовать заменить New Access.Application на CreateObject ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2016, 13:08 |
|
Excel VBA не любит Access, ...
|
|||
---|---|---|---|
#18+
Пробовал, не помогает. Все так-же Automation Error -2147220990 (80040202) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2016, 13:16 |
|
Excel VBA не любит Access, ...
|
|||
---|---|---|---|
#18+
"Если гора не идет ..." (с) Пока наметился такой изворот, в некотором плане даже более удобный. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2016, 16:02 |
|
Excel VBA не любит Access, ...
|
|||
---|---|---|---|
#18+
а события формы btn.Application.Forms("Prices") ловятся? вроде в этом была цела? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2016, 16:14 |
|
Excel VBA не любит Access, ...
|
|||
---|---|---|---|
#18+
Нет. Не дает подписаться с событиями, ни на форму, ни на ее кнопки. В новом варианте они (подписки на форму, ее контролы) и не нужны. Я получаю ссылку на форму через ссылку на кнопку CommandBar-а. При закрытии формы Access.Application благополучно сам падает. В Access-проекте вообще ничего менять не нужно. Это пока ободряет. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2016, 16:37 |
|
Excel VBA не любит Access, ...
|
|||
---|---|---|---|
#18+
Андрей, я вот тут думаю, как можно обойти этот глюк, когда события форм библиотечного файла mdb отслеживать надо, но возможности такой нет, как у вас. Excel у вас не позволяет слушать события Access, но если у вас из Access возможно слушать события листа книги Excel, то можно сделать следующее. В библиотечном файле mdb создать класс наподобие clsAppMonitor, который я высылал раньше. Т.е. сделать систему мониторинга событий форм приложения(если использовать мой clsAppMonitor, то его нужно будет расширить дополнительными событиями, это несложно). Класс clsAppMonitor следит за событиями форм и в ответ генерирует свои события. Так вот, если вы в clsAppMonitor(или, лучше в подписчика на события этого класса, какую-нибудь служебную скрытую форму) закинете объектную переменную типа Worksheet(технологический скрытый от пользователя лист), то вот что это дает. Когда clsAppMonitor генерирует какое-нибудь событие, например, Current, то вы из Access на этом событии вбрасываете в Worksheet, например, в ячейку "A1" значение, идентифицирующее происходящее событие(например, "Current"), а в "B1" идентификатор формы (например, дескриптор ее окна). На это уже сам Excel отвечает генерацией события листа Change. А вы уже из Excel, заранее подписавшись на этой событие, слушайте его, анализируйте, что же именно было вброшено в служебные ячейки "A1" и "B1", ну и собственно интерпретируете и делайте выводы. Т.е. таким образом можно организовать indirect подписку на нужные события форм. Короче, целое дело :) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2016, 21:08 |
|
Excel VBA не любит Access, ...
|
|||
---|---|---|---|
#18+
Лихо закручен сюжетик. :) На самом деле, мне от формы нужно было только Close, по которому я собирался читать данные и валить инстанс Access.Application. Но, поскольку он (инстанс) сам замечательно валится в новой версии, несмотря на живую ссылку на кнопку его-же CommandBar-а, (чего не было с сылкой на форму без подписки), вопрос разрешился как-бы сам собой. Да и наличие специально обученной кнопочки, созданной прямо из Excel проекта, более usability friendly, и абсолютно не вмешивается в логику самого Access проекта, что мне очень симпатично, поскольку Access проект и сам по себе работать должен. зы: Я не пробовал (за ненадобностью), но, возможно, получилось бы подписаться на ивенты любимиго мной ToolBar-а в форме. Но уже лень. :) Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2016, 23:17 |
|
Excel VBA не любит Access, ...
|
|||
---|---|---|---|
#18+
PredeclaredНа самом деле, мне от формы нужно было только Close А что мешает открыть форму в режиме acDialog? Тогда и ловить событие Close не потребуется. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2016, 14:10 |
|
|
start [/forum/topic.php?fid=45&msg=39196501&tid=1613791]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
34ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
others: | 342ms |
total: | 455ms |
0 / 0 |