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

dll на VBA - Help!!!

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



Зарегистрирован: 10.04.2002
Сообщения: 47

СообщениеДобавлено: Ср Мар 20 2002 11:11    Заголовок сообщения: dll на VBA - Help!!! Ответить с цитатой

Написал dll на VBA и пытаюсь вызвать тамошнюю процедурку из Delphi - орет "Точка входа в процедуру ... не найдена в ... dll ...". Как в dll VBA указать процедуре точку входа (т.е., что она будет вызвана из другой проги)?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Славик
Гость





СообщениеДобавлено: Чт Мар 21 2002 17:20    Заголовок сообщения: Re: dll на VBA - Help!!! Ответить с цитатой

Я столкнулся с этим в самом VBA for Exel, а DLL я писал на VC++. Так вот при декларировании функции командой:
Private Declare Function MyFunction Lib "MyDll" (ByVal number As Integer) As Integer
у меня возникала таже ошибка, я вышел из этой ситуации так:
Private Declare Function MyFunction Lib "MyDll" Alias "#1" (ByVal number As Integer) As Integer
имеется ввиду что для функции MyFunction указывается не ее имя а индекс в файле DLL, по документации индексы можно присваивать в произвольном порядке, но я пока не разобрался в этом.
Вернуться к началу
Андрей



Зарегистрирован: 10.04.2002
Сообщения: 47

СообщениеДобавлено: Пт Мар 22 2002 09:31    Заголовок сообщения: Re: dll на VBA - Help!!! Ответить с цитатой

А как мне вызывать эту процедуру из VBA - по алиасу или просто по имени? А как вызвать ее из Delphi, это возможно?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Славик
Гость





СообщениеДобавлено: Пт Мар 22 2002 09:41    Заголовок сообщения: Re: dll на VBA - Help!!! Ответить с цитатой

Вот как работает такая структура в VBA:

Private Declare Function My Lib "c:\Convert.dll" Alias "#1" (ByVal number As Integer) As Integer

Private Sub CommandButton1_Click()
Dim i As Integer
Dim s As String
s = "S"
i = My(s)
End Sub

т.е. функция вызывается просто по имени, но есть еще инструкция Call, это в принципе альтернатива.
Как это все работает в Делфи я не знаю.
Может и вы бы мне помогли с одним вопросом?
Посмотрите форум за 21 число, тема "Очень простенький вопрос".
С уважением Святослав.
Вернуться к началу
Андрей



Зарегистрирован: 10.04.2002
Сообщения: 47

СообщениеДобавлено: Пт Мар 22 2002 10:08    Заголовок сообщения: Re: dll на VBA - Help!!! Ответить с цитатой

Извини, на твой вопрос ответить не могу Sad
А как должна быть объявлена процедура в dll и зачем именно нужен алиас?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Славик
Гость





СообщениеДобавлено: Пт Мар 22 2002 10:36    Заголовок сообщения: Re: dll на VBA - Help!!! Ответить с цитатой

Есть такая теория, что функции в DLL имеют кроме названия символьного еще и порядковый номер, этот номер присваивается автоматически, но можно присвоить вручную с помощью такой инструкции @N, где N номер который ты хочешь присвоить функции, но у меня так и нечего не получилось. Так вот алиас указывается когда в своем проекте VBA ты хочешь использовать отличное от DLL имя функции, тогда в алиасе ты указываешь настоящее имя или порядковый номер функции.
Так вот вызвать из VBA функцию DLL у меня получается только по порядковому номеру.
А как объявлять функцию посмотри на указаной мною до этого теме, там уже есть пример.
С уважением Святослав.
Вернуться к началу
Андрей



Зарегистрирован: 10.04.2002
Сообщения: 47

СообщениеДобавлено: Пт Мар 22 2002 10:47    Заголовок сообщения: Re: dll на VBA - Help!!! Ответить с цитатой

Спасибо большое!
Но ты меня не совсем понял... или я тебя...Smile
Дело в том, что dll написана на VBA. Все процедуры там описаны как в обычном коде VBA.
На сколько я знаю, в dll надо указать функции (процедуре), что она будет вызываться извне (например командой "external"). Так ли это?
Помоги пжлст!
Заранее благодарен! (ты мне уже здорово помог, спасибо Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Славик
Гость





СообщениеДобавлено: Пт Мар 22 2002 10:59    Заголовок сообщения: Re: dll на VBA - Help!!! Ответить с цитатой

Да, конечно ты совершенно прав, для функции которая будет использоваться внешними приложениями указывается специальная инструкция EXPORT (это в VC++), в VBA наверняка есть такая инструкция, это общая теория для всех DLL не важно на каком они языке пишутся. Так что ищи. А я вот тоже мечтаю занятся Visual Basic'ом, мне кажется он более удобен для программирования, и все основные концепции в нем есть, только никак не могу найти его (ну естественно бесплатную версию).
Святослав.
Вернуться к началу
Андрей



Зарегистрирован: 10.04.2002
Сообщения: 47

СообщениеДобавлено: Пт Мар 22 2002 11:14    Заголовок сообщения: Re: dll на VBA - Help!!! Ответить с цитатой

Спасибо большое! Только вся проблема заключается в отсутствии в хелпе аналога Export Sad. Дело в том, что я юзаю SCADA Genesis32 - программать приходится на VBA в примочке ScriptWorX32, а там есть возможность создать из файла dll (метод обработки формы SCADA из Delphi). Но как описать "export" - хрен его знает - нигде не найти, прямо не знаю что делать Sad
Еще раз спасибо.
С уважением, Андрей.
Удачи!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: 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
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...