Превращение кода VBA в нечитаемый
Добавлено: 27 мар 2009, 20:17
Как известно, для среды разработки VBA существует множество надстроек, подключаемых через Add-In Manager в VBA.
Многие из них я перепробовал, но одной нужной мне функции так и не нашёл... может, кто встречал что-либо подобное:
Надстройка должна превращать код текущего проекта VBA в нечитаемый - заменять понятные имена переменных на что-то типа строки из множества символов подчёркивания и одинаковых букв.
Например, такой код:
превращать в что-то вроде этого:
Обе версии функций полностью работоспособны, однако разобраться в коде второй версии, и тем более внести в этот код изменения намного сложнее.
Нужно это всё для передачи заказчику временных версий программы (до полной оплаты проекта), чтобы заказчик вдруг не надумал отдать почти готовый код другому исполнителю на доработку за гораздо меньшую сумму. (урезать функциональность не всегда получается)
При наличии в файле нескольких тысяч строк такого кода мало кто захочет в нём ковыряться
Компиляцию в ComAddin использовать как-то не хочется (лишнее время отнимает, да и предпочитаю хранить код непосредственно в файле Excel)
Было бы хорошо, если бы код нажатием одной кнопки превращался бы в нечитаемый. Кто-нибудь сталкивался с подобными надстройками?
Многие из них я перепробовал, но одной нужной мне функции так и не нашёл... может, кто встречал что-либо подобное:
Надстройка должна превращать код текущего проекта VBA в нечитаемый - заменять понятные имена переменных на что-то типа строки из множества символов подчёркивания и одинаковых букв.
Например, такой код:
Код: Выделить всё
Public Function MyReplace(ByVal Expr As String, ByVal find As String, _
ByVal rep As String, Optional ByVal start As Long = 1, _
Optional ByVal count As Long = -1, _
Optional ByVal compare As VbCompareMethod = vbBinaryCompare) As String
If start = 1 Then
MyReplace = Replace(Expr, find, rep, start, count, compare) 'Вызов стандартной функции Replace
Else
MyReplace = VBA.Left(Expr, start - 1) & Replace(Expr, find, rep, start, count, compare)
End If
End Function
Код: Выделить всё
Public Function A___(ByVal A____ As String, ByVal A_____ As String, _
ByVal A______ As String, Optional ByVal A_______ As Long = 1, _
Optional ByVal A________ As Long = -1, _
Optional ByVal AA_______ As VbCompareMethod = vbBinaryCompare) As String
If A_______ = 1 Then
A___ = Replace(A____, A_____, A______, A_______, A________, AA_______)
Else
A___ = VBA.Left(A____, A_______ - 1) & Replace(A____, A_____, A______, A_______, A________, AA_______)
End If
End Function
Нужно это всё для передачи заказчику временных версий программы (до полной оплаты проекта), чтобы заказчик вдруг не надумал отдать почти готовый код другому исполнителю на доработку за гораздо меньшую сумму. (урезать функциональность не всегда получается)
При наличии в файле нескольких тысяч строк такого кода мало кто захочет в нём ковыряться

Компиляцию в ComAddin использовать как-то не хочется (лишнее время отнимает, да и предпочитаю хранить код непосредственно в файле Excel)
Было бы хорошо, если бы код нажатием одной кнопки превращался бы в нечитаемый. Кто-нибудь сталкивался с подобными надстройками?