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

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

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.02.2009, 01:15   #1
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию Создание DLL в Excel

Есть книга с рядом макросов и функций. Нужно все или часть макросов и функций запихнуть в Dll. Для целей:
1. Закрытия когда.
2. Использование их в других книгах. Так как планируется что число подобных книг будет весьма большое (со временем может достигать нескольких тысяч), совершено не логично хранить в каждой книге все макросы и функции. Вынос их в Dll позволит так же центролизовано обновлять для всех книг.

Возможно ли подобное? И как это сделать?
Может есть иные решения задачи...
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Старый 02.02.2009, 01:28   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Нужно все или часть макросов и функций запихнуть в Dll
Посмотрите ссылки в этой теме

Цитата:
совершено не логично хранить в каждой книге все макросы и функции
Полностью согласен.
Для этого существуют надстройки и личная книга макросов (personal.xls)

Для создания надстройки:
Перенесите все свои финкции в один файл Excel, и сохраните его как надстройку (с расширением xla), после чего подключите эту надстройку (через меню Сервис - Надстройки)
Тогда Ваша надстройка будет загружаться вместе с Excel, и Ваши функции станут доступны во всех книгах.

При желании можно встроить в надстройку автоматическое обновление - когда надстройка при запуске проверяет на сервере наличие новой версии, и устанавливает её вместо старой. Если понадобится - есть пример кода.
EducatedFool на форуме Ответить с цитированием
Старый 02.02.2009, 09:11   #3
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Посмотрите ссылки в этой теме

Посмотрел материал. Скачал DoneEx XCell Compiler 1.9.4. Попробовал создать exe. Результат мне не очень понравился:
1. Размер exe в два раза превосходит размер исхродного файла.
2. После копиляции начались проблемы с запуском функций. Скорее всего из-за русских названий переменных.
3. Как был листинг процедур открытым, так и остался.
4. непонятно пока как будут сохраняться рабочие изменения в таблицах, ну не перекоплиривовать же exe каждый раз.
Возможно я не разобрался в настройках, сегодня еще покопаюсь.
Остально матетериал осмыслить еще не успел.
Нашел руссификатор и крак на версию 1.8.1 С трудом выловил ее в инете, но они ругаются что версия не та. Так что похоже в случае использования этой программы станет вопрос руссификации.

Полностью согласен.
Для этого существуют надстройки и личная книга макросов (personal.xls)


ИМХО использование personal.xls в средних и крупных проектах - как минимум плохой тон. Так как этот файл для "личных" макросов, а использование его в проектах приведет к тому что "личные" данные будут убиваться при каждом обновлении макросов проекта.

Для создания надстройки:
При желании можно встроить в надстройку автоматическое обновление - когда надстройка при запуске проверяет на сервере наличие новой версии, и устанавливает её вместо старой. Если понадобится - есть пример кода.



Было бы очень интересно посмотреть на код. Можно кидать так же на tae(очень злая собака)mail15.com

Но все это не решает проблему открытости когда. Одним из обязательных условий проекта является хотя бы частичная закрытость кода. Крайне не хотелось бы привлекать в проекте дополнительные языки программирования для написания dll. Это только осложнит проект и внесет в него сумятицу, а так же протребует доплонительных времяных затрат.

PS Как-то криво у меня пошло оформление цитат....
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Старый 02.02.2009, 09:22   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Но все это не решает проблему открытости когда. Одним из обязательных условий проекта является хотя бы частичная закрытость кода. Крайне не хотелось бы привлекать в проекте дополнительные языки программирования для написания dll. Это только осложнит проект и внесет в него сумятицу, а так же протребует доплонительных времяных затрат.
VBA - не та среда разработки, где можно говорить о закрытости кода...
Если захотят - взломают что угодно. Ломают все программные продукты крупных софтверных компаний, что уж говорить о проекте VBA...

Подумайте, а много ли желающих будет снять защиту в Вашем файле...
Создаёте обычную надстройку, ставите пароль на проект VBA, а когда в проекте будет несколько тысяч строк кода, Вы и сами не сможете разобраться, какая функция за что отвечает

К тому же, есть специальные программы, которые удаляют все комментарии из файла.

Цитата:
Было бы очень интересно посмотреть на код.
У меня код достаточно сильно привязан к конкретному проекту - там и распределение прав доступа, и все настройки (в том числе и обновления) хранятся в реестре, так что просто скопировать код не получится...
Если надо будет - Вы подробно распишите, как часто надстройка должна обновляться, где хранить зашифрованные пароли - в реестре, или в самом файле надстройки, а также прикрепите пример своего файла - и я сам встрою в него поддержку обновлений.

Вот пример кода:
Вложения
Тип файла: txt код.txt (13.7 Кб, 265 просмотров)

Последний раз редактировалось EducatedFool; 02.02.2009 в 09:30.
EducatedFool на форуме Ответить с цитированием
Старый 02.02.2009, 16:36   #5
Raikhman
Пользователь
 
Аватар для Raikhman
 
Регистрация: 30.01.2009
Сообщений: 75
По умолчанию

У меня, кстати, теже проблемы, что и у ВАС
Я скачал демо версию DoneEx XCell Compiler 1.9.4.
Она делает огромные EXE файлы и ничего не скрывает. Но это проблемы триальной версии программы. Бизнес версия открывает возможности более гибкой настройки и даже сосздание дистрибутива.
Подскажите, где лежит крэк XCell Compiler 1.8.1.
Raikhman вне форума Ответить с цитированием
Старый 02.02.2009, 23:07   #6
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
VBA - не та среда разработки, где можно говорить о закрытости кода...
Если захотят - взломают что угодно. Ломают все программные продукты крупных софтверных компаний, что уж говорить о проекте VBA...
Цитата:
Сообщение от EducatedFool Посмотреть сообщение

Тут ты прав. Но мне по большому счету нужно:
1. Пустить пыл в глаза, в особенности для для начальников, которые и так ни чего не понимают.
2. Закрытый код в общем нужен для защиты с помощью физического ключа. Более того я хочу сам ключ задействовать в системе. Идей в общем такая: На сервере должен стоять ключ который отслеживает одновременное подлючение пользователей в локальной сети, которое ограничено. У каждого пользователя есть свой "именой" ключ в который занесена его личная информация. При работе на локальной машине должен обязательно стоять ОДИН подобный ключ (появление второго ошибка). Информация с этого ключа используется при формировании документов и при необходимости при ограничении уровня доступа сотрудника. Каждый пользователь может запускать неограниченное количество книг.

Подумайте, а много ли желающих будет снять защиту в Вашем файле...

Желающие будут, другой вопрос что квалификация большинства из нх скорее всего будет средняя или ниже средней. Кроме того я хочу построить систему так что бы ее частичное разрушение приводило к потере ряда возможностей.

Создаёте обычную надстройку, ставите пароль на проект VBA, а когда в проекте будет несколько тысяч строк кода, Вы и сами не сможете разобраться, какая функция за что отвечает

Проект относительно небольшой, думаю максиму до 2000-3000 тысяч строк особенно в первых версиях.

К тому же, есть специальные программы, которые удаляют все комментарии из файла.

Где можно найти подобные программы?

У меня код достаточно сильно привязан к конкретному проекту - там и распределение прав доступа, и все настройки (в том числе и обновления) хранятся в реестре, так что просто скопировать код не получится...

Естли литература по это вопросу?

Если надо будет - Вы подробно распишите, как часто надстройка должна обновляться, где хранить зашифрованные пароли - в реестре, или в самом файле надстройки, а также прикрепите пример своего файла - и я сам встрою в него поддержку обновлений.

Обновления по факту, в зависимости от интенсивности работы и нахождения глюков в программе.
А где лучше хранить зашифрование пароли? Если честно я в этом очень слабо разбираюсь. Поиск информации особых результатов не дал.
Сегодня файла с собой нет, завтра с работы заберу. Но он завершено пока только ~20%. И я не сомневаюсь, что скорее всего все будет переписано, код пока весьма сырой.

Вот пример кода:
Спасибо! Попробую разобраться.
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Старый 02.02.2009, 23:14   #7
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию

Цитата:
Сообщение от Raikhman Посмотреть сообщение
У меня, кстати, теже проблемы, что и у ВАС
Я скачал демо версию DoneEx XCell Compiler 1.9.4.
Она делает огромные EXE файлы и ничего не скрывает. Но это проблемы триальной версии программы. Бизнес версия открывает возможности более гибкой настройки и даже сосздание дистрибутива.
Если честно не думаю что платная версия будет работать на много лучше. Мне и нужно то от нее не много...

Цитата:
Сообщение от Raikhman Посмотреть сообщение
Подскажите, где лежит крэк XCell Compiler 1.8.1.
Если бы я помнил. Давай адрес закну. Если сможешь их запустить, с тебя будет версия программы.
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание и вызов библиотеки dll DM_bite Помощь студентам 3 15.06.2010 12:47
создание excel dimonbest Общие вопросы Delphi 9 04.07.2008 10:44
Создание плагинов на DLL: SharedMemory darkstarx Общие вопросы Delphi 13 22.01.2008 22:31
Создание dll John_chek Общие вопросы Delphi 3 24.09.2007 14:26
Создание dll файла для работы с БД Nadya БД в Delphi 2 15.02.2007 12:54