Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.04.2009, 11:43   #1
Averinsergey
 
Регистрация: 29.04.2009
Сообщений: 3
По умолчанию Простой пример вызов DLL из макроса Excel

Добрый день! Перевернул весь форум, но так и не нашел ответ на свой вопрос. У меня достаточно слабые познания в программировани. Но прошу привести пример кодов в макросе Excel и в Delphi, думаю многим это будет интересно.
Ситуация такая: у меня написан огромный макрос в excel, для прятанья кода, хочу часть убрать в Dll.
Пример:
--------------------------------------------
'В Макросе Excel
Private Sub Obrabotka_Click()
'здесь всякие команды для обработки ячеек и т.п.
.....
ВЫЗОВ DLL ДЛЯ ДАЛЬНЕЙШЕЙ ОБРАБОТКИ ЯЧЕЕК (ПРОСТО ВЫЗОВ, БЕЗ ПЕРЕДАЧИ КАКИХ ЛИБО ПАРАМЕТРОВ). По окончании обработки, файл dll должен вернуть управление макросу.
.....
'здесь всякие команды для обработки ячеек и т.п.
End Sub
-------------------------------------------
Теперь про оформелние Dll на Deplhi.
Когда макрос передаст управление dll я из dll подключаюсь к excel:
-------------------------------------------
//код Delphi
uses ComObj;

//ЧТО ЗДЕСЬ ПИСАТЬ?

var
Excel: Variant;
begin
Excel := GetActiveOleObject('Excel.Applicati on');
//дальнейшие мои манипуляции
end;
end.
--------------------------------------------
а теперь вопросы:
1) Как из макроса Excel вызвать этот файл, к примеру имя его будет My.dll. Будет он находится в том же каталоге что и файл Excel. Как правильно декларировать или что то еще. как правильно все прописать?
2) К сожалению не знаю что писать в шапке Delphi, сам понимаю что кучу всего пропустил. Все те переменные которые нужны будут для обработки файла Excel я добавлю, но процедуру или функцию, как правильно написать?

Спасибо!
Averinsergey вне форума Ответить с цитированием
Старый 29.04.2009, 14:28   #2
Averinsergey
 
Регистрация: 29.04.2009
Сообщений: 3
По умолчанию

Наверно загнул я с вопросом, тогда еще упращу:
есть макрос:
----------------------------
Private Sub Obrabotka_Click()
'ЗДЕСЬ НАДО ВЫЗВАТЬ DLL
End Sub
-----------------------------

Код Delphi:
----------------------------
// ЧТО ЗДЕСЬ НАДО ПИСАТЬ, ЧТО Б СКОМПЕЛИРОВАЛАСЬ DLL
// И ПРИ ВЫПОЛНЕНИИ ПРОСТО ВЫВОДИЛА НА ЭКРАН СООБЩЕНИЕ "ПРИВЕТ МИР"
----------------------------
Спасибо.
Averinsergey вне форума Ответить с цитированием
Старый 05.05.2009, 23:12   #3
Averinsergey
 
Регистрация: 29.04.2009
Сообщений: 3
По умолчанию Самообучение великая вещь :-)

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

код макроса экселя:
Declare Function f_dll Lib "c:\my.dll" ()
Sub TestMacros()
f_dll
End Sub

а вот и сам код в Delphi:
library My;
uses SysUtils, Classes, Dialogs;
function f_dll():string;stdcall;
begin
Showmessage('Hello World!!!');
end;
exports f_dll;
begin
end.

Последний раз редактировалось Averinsergey; 05.05.2009 в 23:13. Причина: исправление грамматических ошибок :-)
Averinsergey вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание и вызов библиотеки dll DM_bite Помощь студентам 3 15.06.2010 12:47
Вызов произвольной функции из DLL Роман Радер Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 31 05.03.2010 22:35
Вызов функции из dll-ки VVVadim Общие вопросы Delphi 2 28.04.2009 10:37
вызов из dll не ShowModal. Roof Общие вопросы Delphi 7 25.07.2008 15:22
Вызов формы внутреннего (dll) ActiveX сервера HelloEverybody Компоненты Delphi 2 29.01.2008 17:25