powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Работа с ActiveX-компонентами в VC++
4 сообщений из 4, страница 1 из 1
Работа с ActiveX-компонентами в VC++
    #32292057
elenochka_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемы программисты! Собственно, как сделать из VBA-шного макроса ActiveX-компонент для работы с ним в среде VC++ 6.0? Вообще основная программа генерит doc-файлы, шаблон для которых генерит макрос. Программа "заполняет" документ своими данными. Макрос готов. Как работать с готовыми ActiveX-компонентами - знаю, а вот как создать свой компонет из этого макроса, не знаю :( Помогите, плиз!
...
Рейтинг: 0 / 0
Работа с ActiveX-компонентами в VC++
    #32303126
Denwer_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нельзя создать ActiveX-компонент на VBA.

Как поступают в таких случаях?
1.Пишут прогу на С++
2.Конектятся из неё напрямую с вордом например
3.И с помощью его интерфейсов так же как из VBA управляют им

Совет(если конечно пригодится):Для того что бы не ломать голову над тем как написать алгоритм с использованием этих интерфейсов делают так: стартуют записаь макроса, потом делают нужный манипуляции, останавливают макросы. После этого получится готовый код на VBA, который не трудно перевести на С++, стой лишь разницей что на С++, будет тяжелее работать с интерфейсами.
...
Рейтинг: 0 / 0
Работа с ActiveX-компонентами в VC++
    #32305008
Фотография vdimas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
создать ActiveX-компонент на VBA нельзя, зато очень просто на VB.

1. Создай новый VB проект, тип - ActiveX DLL
2. Подключи необходимые библиотеки, например MS Word 10.0
3. Создай Public Multiple-Use класс на VB
4. Создай там необходимые Public свойства и методы, перенеси туда свой макрос.
5. Скомпили в DLL
6. В VC++ в stdafx.h поставь
Код: plaintext
#import  "путь к полученной DLL" 

Используй.

напр:
VB класс MyClass в проекте MyDll
Код: plaintext
1.
2.
3.
4.
5.
6.
public property get Prop1() as Long
'ля-ля-ля'
end property

public sub Sub1()
'ля-ля-ля'
end sub

использование в С++:
Код: plaintext
1.
2.
3.
MyDll::_MyClassPtr m_myclass;
m_myclass.CreateInstance(__uuidof(MyDll::MyClass));
int prop1=m_myclass->Prop1;
m_myclass->Sub1();


здесь:
MyDll:: - namespace куда по умолчанию пошел импорт
MyClass - COM объект, твой VB-класс
_MyClass - основной интерфейс этого COM-объекта, унаследован от IDispatch, через него работаешь со свойствами и функциями этого объекта
_MyClassPtr - смарт-поинтер, упрощает корректное обращение с временем жизни COM-объекта.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Работа с ActiveX-компонентами в VC++
    #33890049
neZnauKto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2vdimas
Сделал согласно выашего описания

Код: plaintext
1.
2.
3.
4.
5.
...
	SOES::_FPSPtr m_myclass ; 
	m_myclass.CreateInstance(__uuidof(SOES::_FPS)); 
	long arfa = m_myclass->AAS(rnd, retRnd);
...
но вот когда пытаюсь вызвать, происходит следующее:

Runtime Error!

Program: ...s\Microsoft Visual Studio\MyProjects\...

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.

что не так?
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Работа с ActiveX-компонентами в VC++
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]