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

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

19.07.2014, 19:42. Показов 17922. Ответов 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
Модератор
10065 / 3910 / 885
Регистрация: 22.02.2013
Сообщений: 5,860
Записей в блоге: 79
19.07.2014, 23:27
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Антихакер32 Посмотреть сообщение
я еще раз повторю у них разницы нет VB6 и VBA
0
5472 / 1150 / 50
Регистрация: 15.09.2012
Сообщений: 3,578
19.07.2014, 23:33  [ТС]
The trick, нет в "Visual Studio" возможности нажатием кнопки переводить код VB6 в новый вид Visual Basic? Или может быть в Visual.Net?

Или в любом случае нужно будет вручную переделывать? Не хочется использовать старую среду VB6, лучше уж сразу на новую среду переходить.
0
Модератор
10065 / 3910 / 885
Регистрация: 22.02.2013
Сообщений: 5,860
Записей в блоге: 79
19.07.2014, 23:40
Цитата Сообщение от Скрипт Посмотреть сообщение
The trick, нет в "Visual Studio" возможности нажатием кнопки переводить код VB6 в новый вид Visual Basic? Или может быть в Visual.Net?
Насколько я знаю при открытии .vbp проекта в VB.NET он автоматически переводит его.
1
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18035 / 7738 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
19.07.2014, 23:41
Скрипт, у Catstail есть замечательная статья "COM в действии".
Там все прекрасно с примерами расписано, как создавать такую DLL.
Цитата Сообщение от Скрипт Посмотреть сообщение
Dim shActive As Excel.Worksheet
Как я уже говорил, чтобы VB6 понимал такой код нужно к проекту подключить библиотеку:
Microsoft Office Object Library
Microsoft Excel (Word) Object Library (смотря для какого продукта у тебя макрос).

Это также позволит тебе использовать константы, известные только офису.

Есть еще и другие тонкости,
например, нельзя напрямую использовать объект Application, следовательно и все объекты по иерархии (cells, range и т.п. без явного указания их родителя).

По тому что, когда ты пишешь Application в среде VBA,
ты обращаешься к уже созданному (текущему) экземпляру приложения.

Если ты запускаешь схожий код в VB6 тебе сначала нужно либо создать новый экземпляр приложения:

Visual Basic
1
set Application = CreateObject("Excel.Application")
Либо подключится к уже открытому экземпляру:

Visual Basic
1
Set Application = GetObject(, "Excel.Application")
Естественно не забыв про обработчик ошибок.

Цитата Сообщение от The trick Посмотреть сообщение
Неужели в VBA нет способа защитить код?
Можно установить код. Можно сделать проект непросматриваемым.
Собственно внутренности, что происходит я никогда не исследовал.
Но скажу, что имеющиеся взломщики легко справляются с такой встроенной защитой.
3
5472 / 1150 / 50
Регистрация: 15.09.2012
Сообщений: 3,578
19.07.2014, 23:44  [ТС]
The trick, а в VB.net можно сделать DLL?
И какую среду надо скачивать для VB.net?
1
Модератор
10065 / 3910 / 885
Регистрация: 22.02.2013
Сообщений: 5,860
Записей в блоге: 79
19.07.2014, 23:46
Цитата Сообщение от Скрипт Посмотреть сообщение
The trick, а в VB.net можно сделать DLL?
Да.
Цитата Сообщение от Скрипт Посмотреть сообщение
И какую среду надо скачивать для VB.net?
Visual Studio .NET
1
призрак
 Аватар для ikki
3266 / 894 / 119
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
19.07.2014, 23:48
обфускаторы ещё есть...
некоторые - очень злые.
взломав такой "код", всё равно мало толку пытаться изменить его или дополнить.
проще написать заново.
2
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
19.07.2014, 23:59
Да, надо еще чтото качественное написать, чтоб взломщикам
захотелось взломать твой код, кому надо всеравно взломает,
кто знаком с методами защиты, но всегда можно прописать свой алгоритм
чтоб потенциальный взломщик помучился, но опять-же нужно понимать
те затраты на вложенный труд, и затраты на его защиту, удачи
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18035 / 7738 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
20.07.2014, 00:08
ikki, я думаю что для обфускаторов есть и деобфускаторы ,
а если и нет, то нетрудно написать. Я кстати недавно похожую штуку делал для IDA HexRays.
0
призрак
 Аватар для ikki
3266 / 894 / 119
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
20.07.2014, 00:12
ну и какой "деобфускатор" можно написать, если после обфускатора останется немаленький код с переменными, константами, контролами, функциями и процедурами, поименованными IIIII, IIII1, III1I, II1I1 и т.п.?
плюс полное отсутствие комментариев
0
Универсальный программист
 Аватар для zhvan
41 / 33 / 9
Регистрация: 21.12.2013
Сообщений: 374
Записей в блоге: 1
20.07.2014, 00:16
Цитата Сообщение от ikki Посмотреть сообщение
ну и какой "деобфускатор" можно написать, если после обфускатора останется немаленький код с переменными, константами, контролами, функциями и процедурами, поименованными IIIII, IIII1, III1I, II1I1 и т.п.?
смотря что нужно раскодить
0
призрак
 Аватар для ikki
3266 / 894 / 119
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
20.07.2014, 00:20
я ж не говорю, что обфускатор полностью спасёт Ваш код от использования или модификации
просто во многих случаях (если код не микроскопический по объему и не абсолютно очевидный по логике работы), он сделает это гораздо более трудоёмким.
или даже бессмысленным.
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18035 / 7738 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
20.07.2014, 00:23
Ну, если хочешь проанализировать работу кода, комментарии и переменные не столь принципиальны.
Главное, чтобы они (переменные) не мешали читать все остальные команды.

Достаточно разобраться, что делает та или иная функция. Переименовав их на свое усмотрение,
дальше логика будет легко просматриваться.

Проблема может возникнуть как раз на этапе точечного анализа конкретных функций,
так как существует несколько разных видов обфускации (не только "порча" имен переменных).

Это например, намеренное усложнение алгоритма, добавление множества веток ветвления.
Там где, к примеру в оригинале был один метод, после обфускации будет несколько (по сути пустышки),
а результат один и тот же.
1
5472 / 1150 / 50
Регистрация: 15.09.2012
Сообщений: 3,578
20.07.2014, 08:13  [ТС]
Пункт 1

ikki, а Вы использовали какой-нибудь обфускатор для VBA?
Напишите, пожалуйста, название какого-нибудь хорошего обфускатора для VBA.

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

Проследить работу макроса в любом случае можно, нажимая клавишу F8 (но сейчас вспомнил, что иногда F8 проскакивает в некоторых случаях). Но даже если пользователь поймёт код, то заниматься его очисткой может будет лень и проще будет денег заплатить.


Пункт 2

А вообще, сам DLL ведь тоже можно посмотреть? Как потом защитить DLL от просмотра?
0
призрак
 Аватар для ikki
3266 / 894 / 119
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
20.07.2014, 08:27
пару раз использовал handyObfuscator из ветки Авторские программы, библиотеки, надстройки и шаблоны
потом стало лень.
1
5472 / 1150 / 50
Регистрация: 15.09.2012
Сообщений: 3,578
20.07.2014, 08:36  [ТС]
ikki, а почему стало лень? Просто нажать кнопку, которая всё сделает, нельзя? Нужно потом вручную ещё что-то делать? Или нужно много действий делать? Сколько по времени занимала у Вас обфускация?
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
20.07.2014, 08:47
Цитата Сообщение от Скрипт Посмотреть сообщение
нет в "Visual Studio" возможности нажатием кнопки переводить код VB6 в новый вид Visual Basic?
Есть




Цитата Сообщение от Скрипт Посмотреть сообщение
А вообще, сам DLL ведь тоже можно посмотреть?
Dll, созданные в VB.Net легко декомпилируются вплоть до исходного кода чуть ли не с комментариями
С Dll-ками созданными в VB6 такой фокус уже не пройдет.
2
5472 / 1150 / 50
Регистрация: 15.09.2012
Сообщений: 3,578
20.07.2014, 08:54  [ТС]
SoftIce, можно ли так сделать:?
  1. я создаю макрос в VBA,
  2. затем, когда макрос будет сделан, я копирую макрос в "Visual Studio",
  3. нажимаю в "Visual Studio" кнопку, которая преобразует VBA-код в код "Visual Studio Visual Basic" (сам я ничего не делаю),
  4. делаю DLL.
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
20.07.2014, 08:59
Цитата Сообщение от Скрипт Посмотреть сообщение
(сам я ничего не делаю)
Вот это вряд ли получится. Всегда приходится что-то подправлять.
1
5472 / 1150 / 50
Регистрация: 15.09.2012
Сообщений: 3,578
20.07.2014, 09:00  [ТС]
SoftIce, тогда мне, если я ничего не хочу делать, нужно использовать вместо "Visual Studio" среду "VB6"?
Или и при использовании VB6 тоже не получится автоматизировать и нужно будет вручную что-то делать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.07.2014, 09:00

Как сделать надстройку в 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 свою...


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

Или воспользуйтесь поиском по форуму:
40
Закрытая тема Создать тему
Новые блоги и статьи
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru