Активация и деактивация окон других приложений

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
Saor
Сообщения: 3
Зарегистрирован: 26 ноя 2007, 01:48

Открыты Excel и AutoCAD. Макрос запускаетскя в Excel. Задача: активировать окно AutoCAD, взять данные по объекту, снова активировать Excel и дальнейшие расчеты вести в Excel.
Программа полностью работает, но есть две проблемы:
1. Окно AutoCAD активируется инструкцией

Код: Выделить всё

AppActivate "AutoCAD"
, но обратно програмно окно Excel не активируется, приходится вручную.
2. Диалоговые окна типа "MsgBox" появляются только в окне Excel. Естественно, если окно закрыто, то форму не видно.
Можно ли решить эти проблемы?
bi-lya
Сообщения: 97
Зарегистрирован: 07 июн 2007, 14:08

Так а почему бы не использовать объектные модели? Или AutoCad в Excel или наоборот. Подключаем в референсах - и вперед
;)
Saor
Сообщения: 3
Зарегистрирован: 26 ноя 2007, 01:48

Думаю, что "объектные модели" я и использую. Соответственные библиотеки подключены. Но не открывается обратно окно Excel.
Делить экран на два окна не желательно. Кстати, с Word получилось. Если это косяк AutoCAD, то мою проблему в данном
случае можно было бы решить открытием диалоговых окон в окне AutoCAD макросом из Excel.
Возможно ли это, уважаемые гуру?
Да, возникло несколько идей. Необходимо время, чтобы проверить. Если что-то получится - напишу.
packer
Сообщения: 17
Зарегистрирован: 16 ноя 2007, 13:00
Откуда: Ekaterinburg
Контактная информация:

Соображения здравого смысла подсказывают, что для решения задачи можно исп-ть OLE.
Написать в макросе Экселя

Код: Выделить всё

Set AcadApp=CreateObject("AutoCad.Application") 
- в скобках идентификатор для приложения Автокад - не знаю как он в натуре зовется - для Акцесса я бы Acces.Application написал. И далее в Экселе работать и с методами-объектами приложения Автокад можно - обрщаясь к переменной AcadApp.
Но я, к сожалению, не гуру, и поэтому солюшн основан не на знании, а на здравом смысле :-/ Сам я только из Экселя такие дела с Вордом и Акцессом делал.
ЗЫ А в Автокаде принципиально окно приложения активизировать, чтобы данные взять?
Аватара пользователя
Aent
Сообщения: 1129
Зарегистрирован: 01 окт 2006, 14:52
Откуда: Saratov,Russia
Контактная информация:

packer, не всё так просто ...
см: http://dwg.ru/f/archive/index.php/t-6658.html
Но по существу Вы безусловно правы.
Интересующиеся вопросом смотрят http://www.cad.dp.ua/stats/OLE.php
bi-lya
Сообщения: 97
Зарегистрирован: 07 июн 2007, 14:08

1. Saor, что-то недопойму. Вы говорите, что используете объектные модели - для чего вам вообще активировать окна, в таком случае? Для наглядности, что ли? Я имею ввиду, что если "наглядность" не нужна, то приложения вообще (как обычно) не визуализируются. То есть создаете объекты - для Ехселя, например - приложений, листов, диапазонов с AutoCad'а и делаете расчеты. MsgBox можно вытаскивать, при этом, в AutoCad'е
2. Если все-таки нужна "наглядность", можно окно AutoCad'а минимизировать на крайний случай :)
Saor
Сообщения: 3
Зарегистрирован: 26 ноя 2007, 01:48

>programmer
Макрос запускается из Excel. Далее в чертеже AutoCAD берутся данные по объектам, снова в Excel делаются расчеты, создаются документы и опять в чертеже AutoCAD чертятся объекты. Так же к AutoCADу необходимо обращатья в случае ошибки с чтением данных. Поэтому AutoCAD закрывать не желательно.
С данной темой я до этого обратился в автокадовский форумhttp://www.caduser.ru/cgi-bin/f1/board.cgi?t=30225Ji
Там частично решил свою проблему. На данный момент выяснилось, что скорее всего у меня "косит" AutoCAD. У других все получается.
Да, а выводить диалоговые окна из Excel в окне AutoCAD у меня еще не получилось.
Спасибо.
Ответить