Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.51/82: Рейтинг темы: голосов - 82, средняя оценка - 4.51
5472 / 1150 / 50
Регистрация: 15.09.2012
Сообщений: 3,578

Как сделать DLL для VBA?

19.07.2014, 19:42. Показов 17993. Ответов 106
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Что нужно сделать, чтобы сделать DLL?

Я так понимаю, что нужен какой-то язык программирования.
Есть кажется VB6. Если сделать DLL, то в него можно просто поместить VBA-код, в том виде, в каком этот код находится в VBA? Или нужно изменить?

DLL хочу сделать, чтобы скрывать код макроса.

Например, такой код можно будет просто вставить в DLL или надо будет изменить:?
Visual Basic
1
2
3
4
5
6
7
Sub Procedure1()
 
    Dim shActive As Excel.Worksheet
    
    Set shActive = ActiveSheet
 
End Sub
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.07.2014, 19:42
Ответы с готовыми решениями:

Как создать DLL для VBA
Здравствуйте. Скажите, пожалуйста, как создать dll для VBA. У меня "Visual Studio 2013 Express". В dll хочу вставить такой код:...

Как написать Dll для использования в VBA (MS Access 2003)
Добрый день! По статье сделал Dll: using System; using System.Collections.Generic; using System.Linq; using System.Text; ...

Как создать правильный DLL для использования в VBA макросе CorelDraw
Есть скрипт на VBA для CorelDraw Нужно спрятать важные процедуры в DLL, написанную в Visual Studio 2017 используя язык VisualBasic.NET....

106
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
20.07.2014, 12:09
Студворк — интернет-сервис помощи студентам
Желания Скрипт'а зделать код закрытым вполне понятно,
именно это залог комерции.
Если бы не постоянные нападки одного пользователя, я бы тоже мог нормально это обсуждать, причем
у меня есть секреты чтоб делать такие dll-ки с запутанной логикой, притом
их не нужно регестрировать, а только указать ее место на диске, (или не указывать,
если держать в той-же папке) что очень актуально
в условиях когда в новых осях требуются права админа для регистрации
0
5472 / 1150 / 50
Регистрация: 15.09.2012
Сообщений: 3,578
20.07.2014, 12:12  [ТС]
The trick, спасибо, тогда делаю вывод, что декомпиляция DLL и вскрытие VBA-макроса - это разные вещи и есть смысл, чтобы начать использовать DLL.

Только я вот хочу пользоваться современной программой (ещё прочитал, что VB6 в будущем может не быть, т.к. операционная система Windows перестанет его поддерживать) и хочу попробовать VB.NET.

Декомпиляция VB.NET тоже даст сложный результат?

Я хочу попробовать установить у себя Visual Studio и попробовать туда вставить макрос, а затем нажать кнопку, которая переведёт в VB.Net и хочу посмотреть, получится ли перевести из одного языка программирования в другой. Если не получится, тогда придётся VB6 использовать.
0
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
20.07.2014, 12:20
Даже можно и такое делать, чтоб нативная Dll скачивалась только на время работы программы
причем различная версия, например версия для халявщиков или комерческая версия,
вобщем вариантов множество
0
Модератор
10065 / 3910 / 885
Регистрация: 22.02.2013
Сообщений: 5,860
Записей в блоге: 79
20.07.2014, 13:23
Цитата Сообщение от Скрипт Посмотреть сообщение
Декомпиляция VB.NET тоже даст сложный результат?
Этого я не могу тебе сказать, но с большей вероятностью что да.
Цитата Сообщение от Скрипт Посмотреть сообщение
ещё прочитал, что VB6 в будущем может не быть, т.к. операционная система Windows перестанет его поддерживать
VB.NET в будущем может и не быть, нашей планеты в будущем может не быть. Это не имеет смысла. Программа будет работать если в системе есть MSVBVM60.DLL, а она есть пока везде в стандартной комплектации Windows, и вряд ли ее будут исключать, т.к. сразу же огромное кол-во программ перестанут работать.
Цитата Сообщение от Антихакер32 Посмотреть сообщение
что очень актуально
в условиях когда в новых осях требуются права админа для регистрации
Ты понимаешь это сам? Практически во всех случаях каждый является админом. Или запускаешь от имени админа, или делаешь манифест запроса прав админа, или используешь SxS и тогда ничего вообще не нужно регистрировать.
Цитата Сообщение от Антихакер32 Посмотреть сообщение
у меня есть секреты чтоб делать такие dll-ки с запутанной логикой, притом
их не нужно регестрировать, а только указать ее место на диске, (или не указывать,
если держать в той-же папке)
Эти DLL неполноценны и в некоторых случаях не работают. Почитай там откуда ты скачал про баги, и почему сам автор закрыл доступ к скачиванию дистрибутива.
Цитата Сообщение от Антихакер32 Посмотреть сообщение
Даже можно и такое делать, чтоб нативная Dll скачивалась только на время работы программы причем различная версия
Ага. А если все-таки пользователь сидит под ограниченной учеткой?
Цитата Сообщение от Скрипт Посмотреть сообщение
Только я вот хочу пользоваться современной программой
Для чего тебе при использовании макроса VBA пользоваться современной версией, что это даст?
0
5472 / 1150 / 50
Регистрация: 15.09.2012
Сообщений: 3,578
20.07.2014, 14:58  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
Для чего тебе при использовании макроса VBA пользоваться современной версией, что это даст?
вдруг я плавно перейду в другой язык программирования. А VB6 уже не поддерживается организацией "Microsoft".
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18035 / 7738 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
20.07.2014, 15:27
Цитата Сообщение от Скрипт Посмотреть сообщение
А VB6 уже не поддерживается организацией "Microsoft".
Он уже 6 лет как не поддерживается.
Это не мешает писать на нем программы любой сложности.

Цитата Сообщение от Скрипт Посмотреть сообщение
вдруг я плавно перейду в другой язык программирования.
Дерзай. Только учти, что программы на .Net требует, чтобы в системе был установлен .Net Framework
не ниже той версии, которая использовалась при компиляции проекта.
По-умолчанию, в XP его нет, в Win7, если не ошибаюсь версия 2.0.

Цитата Сообщение от Скрипт Посмотреть сообщение
Декомпиляция VB.NET тоже даст сложный результат?
Результат будет практически идентичным исходному коду (только и того, что без комментариев).
Microsoft обещает возможность компиляции .NET в Native. Но пока еще остается ждать.

Но, не стоит забыть что для .NET есть свои протекторы.
3
5472 / 1150 / 50
Регистрация: 15.09.2012
Сообщений: 3,578
20.07.2014, 20:08  [ТС]
SoftIce, а как зарегистрировать то, что Вы выложили в сообщении #58?
0
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
20.07.2014, 20:22
По всякому можно, можно через Shell
Visual Basic
1
call Shell("RegSvr32 /s /u " & Path)', где Path это путь к твоей DLL
можно с помощью API, вот готовое решение
1
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18035 / 7738 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
20.07.2014, 20:37
Цитата Сообщение от Антихакер32 Посмотреть сообщение
call Shell("RegSvr32 /s /u " & Path)'
Снимать то регистрацию зачем?

Скрипт, Вы можете создать процедурную DLL,
тогда необходимость в регистрации библиотеки отпадет.
2
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
20.07.2014, 20:37
Цитата Сообщение от Скрипт Посмотреть сообщение
как зарегистрировать
Поместите dll в папку C:\Windows\System32 и выполните такую строку

REGSVR32.EXE C:\Windows\System32\For_Скрипт.dll

Вообще-то файл может находиться и по другому пути.

Получите примерно такой результат:
2
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18035 / 7738 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
20.07.2014, 20:41
+ для регистрации в среде Windows Vista и выше потребуется запустить регистрацию с повышенными привилегиями.
Если конечно не сделать вот так.
1
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
20.07.2014, 20:41
Цитата Сообщение от Dragokas Посмотреть сообщение
Снимать то регистрацию зачем?
скопипастил из своих же сообщений, спасибо что заметил..
вот так регить:
Visual Basic
1
call Shell("RegSvr32 /s " & Path)
так отменять:
Visual Basic
1
call Shell("RegSvr32 /s /u " & Path)'

Не по теме:

а ссыль на которую вы указазали, это и есть способ создание нативных DLL
о которых мы тут с "лучшим другом" вступили в полемеку :)

0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18035 / 7738 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
20.07.2014, 20:45
Цитата Сообщение от Антихакер32 Посмотреть сообщение
а ссыль на которую вы указазали, это и есть способ создание нативных DLL
о которых мы тут с "лучшим другом" вступили в полемеку
 Комментарий модератора 
Предупреждение за неявное оскорбление участника форума.
(п. 5.2. Правил Форума.)
0
Модератор
10065 / 3910 / 885
Регистрация: 22.02.2013
Сообщений: 5,860
Записей в блоге: 79
20.07.2014, 21:00
Цитата Сообщение от Dragokas Посмотреть сообщение
Скрипт, Вы можете создать процедурную DLL,
тогда необходимость в регистрации библиотеки отпадет.
Такая DLL может не работать в VBA, т.к. ни о какой инициализации контекста речи нет. Также там есть баги с показом модальных окон насколько я знаю. Это все можно так или иначе обойти, но это уже будет непросто для ТС.
При подключении DLL в референсы она автоматически регистрируется.
ActiveX DLL можно зарегистрировать также вызвав из нее DLLRegisterServer, т.е. объявив в Declare ее, вызвать эту функцию, а потом уже спокойно делать CreateObject (CoCreateInstance).

Добавлено через 4 минуты
Самый идеальный вариант для ТС - написать ActiveX DLL на VB6. Т.к. VB6 COM-ориентированный на нем это будет очень просто сделать. Все остальное займет больше времени/сил.
1
5472 / 1150 / 50
Регистрация: 15.09.2012
Сообщений: 3,578
20.07.2014, 21:12  [ТС]
Зарегистрировал пока вручную, чтобы хотя бы посмотреть, будет работать или нет.
У меня "Windows 7" и просто так не получилось сделать, и я сделал по совету Dragokas из сообщения #71 - сделал с повышенными привилегиями.

Я зарегистрировал ActveX DLL так:
  1. открыл "Диспетчер задач" (Ctrl + Shift + Del) - вкладка "Процессы" - внизу кнопка "Отображать процессы всех пользователей" (после нажатия эта кнопка исчезает);
  2. там же в диспетчере задач: "Файл" - Новая задача (Выполнить...). Откроется окно;
  3. в этом окне внизу нужно поставить флажок "Создать задачу с правами администратора" (у Dragokas не сказано про этот флажок в его инструкции, по которой я делал);
  4. в поле ввёл такой текст:
    regsvr32 C:\Users\User\Desktop\Excel+Dll\Dll\For_ Скрипт.dll
  5. и нажал "OK";
  6. появилось сообщение о том, что всё прошло успешно.
Протестировал макрос - макрос сработал.
0
Модератор
10065 / 3910 / 885
Регистрация: 22.02.2013
Сообщений: 5,860
Записей в блоге: 79
20.07.2014, 21:22
Цитата Сообщение от Скрипт Посмотреть сообщение
У меня "Windows 7" и просто так не получилось сделать
VBA с правами админа запущен? Что мешает сделать так?
Миниатюры
Как сделать DLL для VBA?  
0
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
20.07.2014, 21:22
Цитата Сообщение от Скрипт Посмотреть сообщение
Протестировал макрос - макрос сработал.
Рад за вас, только вам нужно все это както автоматизировать,
если вы хотите копировать и распростронять то что вы хотите зделать
потому-что пользователь может не понять, почему чтото не запускается,
и так-же не в состоянии будет это объяснить
0
5472 / 1150 / 50
Регистрация: 15.09.2012
Сообщений: 3,578
20.07.2014, 21:25  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
VBA с правами админа запущен?
не знаю, с какими правами у меня.

The trick, я так подключал библиотеку, но не подключалось - выдавалась сообщение "ActiveX Component can't create object".
0
Модератор
10065 / 3910 / 885
Регистрация: 22.02.2013
Сообщений: 5,860
Записей в блоге: 79
20.07.2014, 21:27
Цитата Сообщение от Скрипт Посмотреть сообщение
he trick, я так подключал библиотеку, но не подключалось - выдавалась сообщение "ActiveX Component can't create object".
Цитата Сообщение от The trick Посмотреть сообщение
VBA с правами админа запущен?
Да, нет?
0
5472 / 1150 / 50
Регистрация: 15.09.2012
Сообщений: 3,578
20.07.2014, 21:29  [ТС]
The trick, я не знаю, как это узнать, - нужно гуглить.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.07.2014, 21:29

Как сделать надстройку в Visual Basic для VBA?
Помогите, как сделать надстройку в Visual Basic для VBA?

dll для VBA
Доброе время суток. Создаю dll в VB.NET. В нее хочу запихнуть часть кода vba. Но после создания библиотеки не могу ее...

Как сделать библиотеку DLL с моим компонентом видимой для COM?
Я создал компонент, он работает в готовом exe. Я создал DLL и засунул туда этот компонент. Он работает если создавать его из кода (Dim a...

Как сделать обработчик OnClick в библиотеке(dll) для MainMenu?
Разрабатываю приложение, и делаю так что бы большая часть функций приложения загружалась из библиотек. В общем делаю приложение, которое...

DLL для VBA и VB - почему разница в работе?
Доброго дня, читающий. Есть софтина "Полезные расчеты", которая выполняет некую полезную работу. Я написал на VBA под Excel свою...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
80
Закрытая тема Создать тему
Новые блоги и статьи
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru