Запуск макроса Corel в хидден режиме.

  • Автор темы Автор темы Indi
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

Indi

Участник
Топикстартер
Сообщения
5
Реакции
0
Здравствуйте.
Хочу реализовать отрисовку простейших карт и графиков по заданным пользователем параметрам в CorelDraw.
Примерная последовательность действий:
1) Считывание параметров из файла Excel.
2) На основе полученных параметров собирается код макроса
3) Вызов программы CorelDraw в хидден режиме
4) Передача макроса в Corel и запуск
5) Диалоговое окно "отобразить построенный график" или "сохранить файл".

Вобщем, пункты 1,2,3 и 5 проблем не вызывают. А вот возможно ли передать файл или просто код макроса (в виде юникод-строки, например) в Corel и запустить его - я так и не разобрался.

Так что вопрос по пункту 4 - как это осуществить?

Основная программа написана скриптером Neo Sign of Misery. Из функций, которые могут пригодиться, скриптер умеет вызывать внешние dll и их функции, работать с коммандной строкой, предавать почти любые типы данных непосредственно нужному процессу, управлять клавиатурой/мышкой, работать с памятью.
В принципе, можно написать отдельный модуль для работы с Corel на VBA. Но тогда необходимо реализовать передачу параметров из основной программы в модуль и обратно (для обработки ошибок).

http://forum.rudtp.ru/showthread.php?t=49969
Здесь есть пара ссылок для работы с Corel через COM, но в обоих случаях макрос и программа - единый код, а мне надо передать уже готовый (собранный ранее и сохраненный на диск/в память) макрос. К тому же в описанных по ссылкам случаях окно corel активно, а у меня хидден.
 
Ответ: Запуск макроса Corel в хидден режиме.

Хочу реализовать отрисовку простейших карт и графиков по заданным пользователем параметрам в CorelDraw.
Такое уже есть и на обероне и на макромонстере.
3) Вызов программы CorelDraw в хидден режиме
Из эксела что ли?
К тому же в описанных по ссылкам случаях окно corel активно, а у меня хидден
Не обязательно.
 
Ответ: Запуск макроса Corel в хидден режиме.

Готовые макросы не обероне мне не подходят.
Работа с corel и exel - подпрограммы, вызываемые из основного потока программы. В основном потоке производится общение с пользователем, математические и логические операции с данными и т.п.

Не знаю как импортировать в программу, написанную на VB, кореловские классы. Я так понял, они находятся в файле coreldraw.tlb. А как оттуда вытащить то, что мне нужно - не знаю. Подскажите, плз.
 
Ответ: Запуск макроса Corel в хидден режиме.

Не знаю как импортировать в программу, написанную на VB
Чтото вы меня запутали совсем. Зачем в программу на VB импортировать кореловские классы? Вы тоько вызываете корел и эксел через OLE из основной программы. Сделайте так, чтобы при запуске корела ваш макрос отрабатывал и все. На автозапуск его поставьте к примеру.
Готовые макросы не обероне мне не подходят.
Возьмите какой нибудь похожий макрос оттуда и доработайте как вам надо.
А вцелом, я совершенно не пойму, что именно вам надо. Neo Sign of Misery - это не средство для разработки приложений, а, скорее, продвинутый батчер. Все, что он умеет делать, можно (и лучше) делать, оставаясь в рамках корела или эксела. Графики и тот и другой умеют строить сами. Поэтому, я не очень понимаю, зачем нужна подобная вязка ежа с ужом?
 
Ответ: Запуск макроса Corel в хидден режиме.

Все делается не выходя из экселя или корела, можно в кореле набросать макрос который берет данные с экселя, можно в экселе юзать корел по полной, достаточно выбрать в tools-references нужную библиотеку.
Set Corel = CreateObject("CorelDRAW.Application")
Set Doc = cDraw.ActiveDocument
и поехали, значек корела даже в трее не увидите.
Аналогично с экселем, все можно юзать из любого языка вменяемо работающем с OLE-Automation.
 
Статус
Закрыто для дальнейших ответов.