Шаг 46 - Dll для Excel

Создание проекта

Создаем обычную динамическую библиотеку. Выбираем файл, создать, потом Win32 Dynamik-Link Library. Не забудьте указать имя проекта (DllExcel).

46_1.gif (19602 b)

И три файла нужно создать в проекте. Как мы это делали в "Шаг 1 - Минимальный проект".

dllexcel.cpp
dllexcel.h
dllexcel.def

46_2.gif (2354 b)

Создаем код

//				Step46
// Сайт Первые шаги (firststeps.narod.ru)
// Каев Артем (1999-2001)
// создано 1999 г.
// обновление 10.07.2001
// dllexcel.h
#include "windows.h"
extern "C"
{
void WINAPI MyTest();
}
// Step46
// Сайт Первые шаги (firststeps.narod.ru)
// Каев Артем (1999-2001)
// создано 1999 г.
// обновление 10.07.2001
// dllexcel.cpp
#include "dllexcel.h"
void WINAPI MyTest()
{
MessageBox(0,"Hellos","Dll",MB_OK);
}
; dllexcel.def
EXPORTS
MyTest @1

Описание и макрос Excel

Declare Sub MyTest Lib "dllexcel.dll" ()
Sub Test()
MyTest
End Sub

Вот так работает наша DLL.

46_3.gif (3996 b)

Описание

Первым шагом мы реализовали саму функцию в CPP файле. В общем всё тривиально, за исключением модификатора WINAPI. Существует несколько моделей вызовов функций. Для использования в Windows модель вызовов функций PASCAL. Для соответствия требованиям WIN32 API и добавлен модификатор. Дальше в exceldll.h мы описали данную функцию. Но применили опять модификатор для приведения имен функций к стандарту C. Применение этого стандарта гарантирует поддержку Ваших имен функций другими программами. Если DLL создается именно для вашего приложения, то это не важно, но если Вы собрались поделиться ей с миром, то должны обеспечить совместимость.

И последним шагом заполнили def файл, описав функцию MyTest как функцию экспорта, то есть что она будет извлекаться из DLL. Теперь собирайте проект. Полученную DLL нужно поместить в каталог Windows/System или просто Windows или WinNT, если Windows NT. При вызове функции из DLL необходимо чтобы DLL была найдена. В описанных каталогах операционная система обязательно посмотрит.

Теперь запустите Excel, создайте макрос, опишите функцию и код макроса. Пояснений я сюда писать не буду, т.к. это касается программирования VBA. А если вы этого не умеете, зачем вам этот шаг, хотя на Бейсике программировать может каждый. Запускайте макрос. Если Вы всё сделали правильно, то увидите диалоговое окно созданное функцией DLL.

Это очень хорошая возможность. Применив данную технику Вы можете расширить возможности любой программы, которая имеет макроязык и функции работы с DLL. Перечислю на взлет программы Microsoft Office, Corel Draw (Corel Script), AutoCad (VBA), ArcView (Avenue) и т.д.

Шпаргалка

Функция должна быть описана в стандарте С.

extern "C"
{
........
}

Вызов должен быть в стандарте вызовов Windows

..... WINAPI .........
{
............
}

Загрузить проект | Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 06.10.99 (обновлено 10.07.2001)