Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

VC++ and Excel

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
mopemah
Гость





СообщениеДобавлено: Пн Окт 28 2002 17:48    Заголовок сообщения: VC++ and Excel Ответить с цитатой

Проблема такая:
Надо сделать VC++ dll, в которую поместить маленькую экспортируемую функцию. С этим проблем нет.
Но эту функцию надо вызывать из Excel'а примерно так '=MyDLL.dll!MyFunc()' ну или как-нить похоже.
Что я пробую сделать: из Excela вызываю функцию регистрации '=REGISTER.ID("MyDLL.dll", "MyFunc","B")' (последний параметр согласно MSDN показывает, что функция должна вернуть double)
Нормально, регистрируется, возвращает какую-то цифирю, которая, видимо, является идентификатором моей функции. Но вот дальше - вызвать мою функцию не удается. Пляски с бубном не помогают.
Хорошо, пробую другой вариант: с помощью OLE в своей программке создаю инстанс Excela и пытаюсь вызвать функцию регистрации моей dll'ной функции. Попытка приводит не к регистрации (как ожидалось!) а к вызову моей функции, результат вызолва корректный, все хорошо, но мне надо функцию вызывать из Excela!!!!
Вобщем полный ступор, помогите, кто чем может, ссылками, примерами кода, хоть на барсике...
Вернуться к началу
Борис
Гость





СообщениеДобавлено: Пн Окт 28 2002 18:33    Заголовок сообщения: Предлагаю, но не гарантирую. Если не получится, бери пример OLE-клиента-сервера на MSDN (тьфу, пакость, весь реестр мне загадил Ответить с цитатой

Если есть файл имя_файла0.def со словом EXPORTS, то попробуй такое:

Declare Function имя_функции Lib "имя_файла1.DLL" (параметры) As возвращаемый_тип


Если файла имя_файла0.def нет, то попробуй такое:

Declare Function имя_функции Lib "имя_файла.DLL" Alias "экспортируемое_имя" (параметры) as возвращаемый_тип

"экспортируемое_имя" узнай из карты имен (DLL-ку откомпилируй с созданием карты имен)


Дальше просто вызывай функцию без всяких регистраций
Вернуться к началу
mopemah
Гость





СообщениеДобавлено: Пн Окт 28 2002 19:04    Заголовок сообщения: Re: Предлагаю, но не гарантирую. Если не получится, бери пример OLE-клиента-сервера на MSDN (тьфу, пакость, весь реестр мне заг Ответить с цитатой

Спасибо, попробую.
Собственно, проблему решил.
Оказывается для регистрации dll'ной функции в Excele из С надо пользовать не Excel::_Application.Run(...) , а Excel::_Application.ExecuteExcel4Macro( "REGISTER(bla-bla-bla)" )
Вернуться к началу
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...