|
Удаление макросом VBA себя самого или своего модуля
|
|||
---|---|---|---|
#18+
Многих мучает вопрос как с помощью команды макроса в Excel удалить сам макрос или один из его модулей. Варианты такие: ******************* Sub DeleteAllLines() ' удаляет все что написано в Модуле1 With ThisWorkbook.VBProject.VBComponents("Module1").CodeModule .DeleteLines 1, .CountOfLines End With End sub ******************* Sub DeleteModule() ' удаляет сам Модуль1 Dim vbc As VBComponent Set vbc = ThisWorkbook.VBProject.VBComponents("Module1") ThisWorkbook.VBProject.VBComponents.Remove vbc Set vbc = Nothing End sub ******************* Sub DeleteModule() ' удаляет весь макрос Dim tmp As String Dim vbc As VBComponent Dim prj As VBIDE.VBE Set prj = Excel.Application.VBE For Each vbc In prj.VBProjects("NAME").VBComponents If (vbc.Type = vbext_ct_MSForm Or vbc.Type = vbext_ct_StdModule Or vbc.Type = vbext_ct_ClassModule) And vbc.Name <> "Module2" Then tmp = vbc.Name prj.VBProjects("NAME").VBComponents.Remove vbc tmp = "" End If Next vbc Set prj = Nothing End sub ******************* НО!!!!!!!!!!!!!!!!!!! Все эти коды выполняются ТОЛЬКО с установленной галочкой «Доверять доступ к Visual Basic Project» («Trust access to Visual Basic Project») в параметрах безопасности макросов. ВНИМАНИЕ ВОПРОС! Как программным методом (кодами в начале макроса) изменить параметры безопасности и установить соответствующую галочку? Я НЕ ПИШУ ВИРУСЫ, дело в том, что я продаю свои мелкие программки на VBA и хочу защитить свои авторские права. Мне надо чтобы после определенной даты или после определенного кол-ва запуска программы она удаляла сама себя. Мне НЕ НАДО воздействовать на другие файлы и программы, надо только "лицензировать" свою. Была еще такая идея: После проверки даты или кол-ва запусков, в случае привышения макрос сохраняет свой же файл в формате Excel 3.0, который не может содержать макросов. Идея прекрасно воплощяется в жизнь, но только если сам макрос не защищен паролем! Может как-то развить это направление? Слышал еще такое: Что если проект имеет цифровую подпись MicroSoft то даже эта галочка не нужна, т.к. в таком случае Excel воспринемает эту прогу как "свою родную" и разрешает любые манипуляции с макросом самим макросом. Для этого надо всего-лишь подписаться цифровым сертификатом MS. Кто-нибудь знает как это сделать? Тем более что прога по присвоению сертификатов находится в стандартной комплектации Офиса. Заранее спасибо за все советы! ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2006, 14:38 |
|
Удаление макросом VBA себя самого или своего модуля
|
|||
---|---|---|---|
#18+
Как вариант. А если в начале макроса делать проверку и не выполнять его просто по определенному условию? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2006, 15:09 |
|
Удаление макросом VBA себя самого или своего модуля
|
|||
---|---|---|---|
#18+
Интересно... раз мешает пароль может на каком то этапе его прогрмно убрать? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2006, 17:16 |
|
Удаление макросом VBA себя самого или своего модуля
|
|||
---|---|---|---|
#18+
GoldenAxeВНИМАНИЕ ВОПРОС! Как программным методом (кодами в начале макроса) изменить параметры безопасности и установить соответствующую галочку? Никак. Абсолютно. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2006, 18:31 |
|
Удаление макросом VBA себя самого или своего модуля
|
|||
---|---|---|---|
#18+
GoldenAxeСлышал еще такое: Что если проект имеет цифровую подпись MicroSoft то даже эта галочка не нужна, т.к. в таком случае Excel воспринемает эту прогу как "свою родную" и разрешает любые манипуляции с макросом самим макросом.Нет. "Подписаная" и сконвертированная в add-on книга сможет только запускать имеющиеся в ней макросы без требования к пользователю включить поддержку макросов для этой книги. Но модифицировать макросы она все равно не сможет если пользователь не разрешит. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2006, 18:34 |
|
Удаление макросом VBA себя самого или своего модуля
|
|||
---|---|---|---|
#18+
GoldenAxeВНИМАНИЕ ВОПРОС! Как программным методом (кодами в начале макроса) изменить параметры безопасности и установить соответствующую галочку? За уровень безопасности отвечает параметр "Level" раздела реестра "HKEY_CURRENT_USER\\Software\\Microsoft\\Office\\11.0\\Excel\\Security" (для Office 2003). За доверительный доступ отвечает параметр "AccessVBOM" того же раздела. Уровень безопасности в начале выполнения макроса изменить нельзя. Собственно, что выполнять, если макросы отключены. Его можно изменить из внешнего приложения или скрипта. Этот вопрос обсуждался здесь. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2006, 22:09 |
|
Удаление макросом VBA себя самого или своего модуля
|
|||
---|---|---|---|
#18+
k-nikeКак вариант. А если в начале макроса делать проверку и не выполнять его просто по определенному условию? Да это как раз не вариант... Елси просто не запустить макрос - его тело останется без изменений, и если в него влезть - можно просто убрать эту проверку и прога заработает. А влезть даже в запароленый макрос - не проблема... "спасибо" всяким прогам по открытию VBA паролей. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2006, 11:19 |
|
Удаление макросом VBA себя самого или своего модуля
|
|||
---|---|---|---|
#18+
Ashton GoldenAxeВНИМАНИЕ ВОПРОС! Как программным методом (кодами в начале макроса) изменить параметры безопасности и установить соответствующую галочку? За уровень безопасности отвечает параметр "Level" раздела реестра "HKEY_CURRENT_USER\\Software\\Microsoft\\Office\\11.0\\Excel\\Security" (для Office 2003). За доверительный доступ отвечает параметр "AccessVBOM" того же раздела. Уровень безопасности в начале выполнения макроса изменить нельзя. Собственно, что выполнять, если макросы отключены. Его можно изменить из внешнего приложения или скрипта. Этот вопрос обсуждался здесь. Во! Мы близки к развязке! Но! после написания такого: Sub pop() \' Меняем доверие On Error Resume Next Dim objShell Dim vatReturn Set objShell = CreateObject("WScript.Shell") vatReturn = objShell.RegRead( _ "HKEY_CURRENT_USER\\Software\\Microsoft\\Office\\11.0\\Excel\\Security\\AccessVBOM") MsgBox vatReturn objShell.RegWrite _ "HKEY_CURRENT_USER\\Software\\Microsoft\\Office\\11.0\\Excel\\Security\\AccessVBOM", _ 1, "REG_DWORD" MsgBox vatReturn \' удаляем все строки в Модуле 1 With ThisWorkbook.VBProject.VBComponents("Module1").CodeModule .DeleteLines 1, .CountOfLines End With End Sub Даже когда сначала выдает значение парамерта "0", затем меняет его на "1", все равно галочка не появляется и модуль не стирается... только когда вручную вставишь галочку в поле Доверять доступ к VB Project только тогда макрос удалит модуль1... Т.е. в реестре меняется. а на деле ничего не происходит, даже после перезапуска Excel... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2006, 11:24 |
|
Удаление макросом VBA себя самого или своего модуля
|
|||
---|---|---|---|
#18+
А если вот такой дикий вариант: Делаете в VB6 ActiveX Dll. В нем пишете код для макроса. регистрируете Dll в системе. затем в Excel подключаете эту dll, и запускаете в ней процедуру с вашим кодом. А в самой dll можно втыкать любые проверки на исполнение макроса, подломать их будет достаточно сложно... см аттач. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2006, 11:42 |
|
Удаление макросом VBA себя самого или своего модуля
|
|||
---|---|---|---|
#18+
аттач: ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2006, 11:42 |
|
Удаление макросом VBA себя самого или своего модуля
|
|||
---|---|---|---|
#18+
Артем GИнтересно... раз мешает пароль может на каком то этапе его прогрмно убрать? Интересная идея... А как можно макросом отключить свой собственный пароль? Есть мысли? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2006, 11:47 |
|
Удаление макросом VBA себя самого или своего модуля
|
|||
---|---|---|---|
#18+
NikzА если вот такой дикий вариант: Делаете в VB6 ActiveX Dll. В нем пишете код для макроса. регистрируете Dll в системе. затем в Excel подключаете эту dll, и запускаете в ней процедуру с вашим кодом. А в самой dll можно втыкать любые проверки на исполнение макроса, подломать их будет достаточно сложно... см аттач. Это довольно сложно... в смысле заставить юзверя сначала Dll регистрировать ... дело в том, что изначальная задача - упростить жизнь простым смертным, которые не знают даже как поменять уровень безопасности, ну а как прописать dll в систему им точно не по-зубам... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2006, 11:51 |
|
Удаление макросом VBA себя самого или своего модуля
|
|||
---|---|---|---|
#18+
GoldenAxe NikzА если вот такой дикий вариант: Делаете в VB6 ActiveX Dll. В нем пишете код для макроса. регистрируете Dll в системе. затем в Excel подключаете эту dll, и запускаете в ней процедуру с вашим кодом. А в самой dll можно втыкать любые проверки на исполнение макроса, подломать их будет достаточно сложно... см аттач. Это довольно сложно... в смысле заставить юзверя сначала Dll регистрировать ... дело в том, что изначальная задача - упростить жизнь простым смертным, которые не знают даже как поменять уровень безопасности, ну а как прописать dll в систему им точно не по-зубам... а что мешает повесить в Workbook_Open() автоматическую регистрацию dll Код: plaintext 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2006, 12:08 |
|
Удаление макросом VBA себя самого или своего модуля
|
|||
---|---|---|---|
#18+
Nikz а что мешает повесить в Workbook_Open() автоматическую регистрацию dll Код: plaintext 1. 2. 3. 4. 5.
Хмм... я об этом не подумал... А можно опубликовать что конкретно должно находиться в dll чтобы я смог удалить один из модулей? Я просто с dll никогда не связывался... Если это возможно - киньте примерчик такой библиотеки на мыло или тут выложите... goldenaxxe@mail.ru А если возможно - то пару xls + dll которые взаимодействуют друг с другом... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2006, 12:24 |
|
Удаление макросом VBA себя самого или своего модуля
|
|||
---|---|---|---|
#18+
относительно простых у меня к сожалению нет есть пара проектов, но это так сказать "вещи в себе", они запускаются только при куче установленного специализированного софта (для которого они собственно и писались, как раз по той же причине - для защиты кода, потому что базовые знания у юзеров VB+advanced office password recovery и прощай деньги за пару месяцев кодописания) так что боевой пример выслать не могу но чуть выше лежит простенький пример в книге excel образец того как вызвать эту dll в проекте VB одна процедура runMacro в нее excel передает свой application в этой процедуре пишете все то же самое что и в модуле в excel, только не забывайте указывать к какому приложению excel относятся эти действия. то есть если в excel было написано Код: plaintext
Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2006, 12:41 |
|
Удаление макросом VBA себя самого или своего модуля
|
|||
---|---|---|---|
#18+
GoldenAxe k-nikeКак вариант. А если в начале макроса делать проверку и не выполнять его просто по определенному условию? Да это как раз не вариант... Елси просто не запустить макрос - его тело останется без изменений, и если в него влезть - можно просто убрать эту проверку и прога заработает. А влезть даже в запароленый макрос - не проблема... "спасибо" всяким прогам по открытию VBA паролей. Не хочу показаться пессимистом, но: 1. Если юзер чайник, то навряд ли он может что-то изменить. 2. А если он маломальски в этом разбирается (по крайней мере, знает про программы, которые вскрывают VBA-пароли), то ему не составит труда вскрыть файл еще до того как закончится срок действия макросов или элементарно скопировать этот файл. Тут на форуме тусуется человек, который продает VBA-пректы. У него бы поинтересоваться как их защищать, если это, конечно, не секретная информация. Кажется его MXAlex зовут или как-то так. Может лучше тогда это дело на VB переписать? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2006, 14:00 |
|
Удаление макросом VBA себя самого или своего модуля
|
|||
---|---|---|---|
#18+
А можно с помощью VBA имитировать нажатия клавишь? и программно просто последовательно нажимая виртуальные клавиши поставить эту галочку «Доверять доступ к Visual Basic Project» ? или с помощью запущенной VBA стандартной Экранной клавиатурой (Главное меню\Программы\Стандартные\Специальные возможности\Экранная клавиатура) Вот еще: Я писал что с помощью ключа objShell.RegWrite _ "HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Excel\Security\AccessVBOM", _ 1, "REG_DWORD" я менял параметр AccessVBOM, который в реестре менялся, а в Excel - нет. Я попробовал руками поменять параметр AccessVBOM в реестре - и тоже в Excel ничего не поменялось!!! НО!!! если Excel закрыт - то поменяв этот параметр при следующем запуске Excel галочка ПОЯВЛЯЕТСЯ!!! Т.е. надо чтоб скрипт сработал при закрытом Экселе!!! Как это можно сделать? Может макрос закрыть Excel и продолжать работать из оперативной памяти? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2006, 14:13 |
|
Удаление макросом VBA себя самого или своего модуля
|
|||
---|---|---|---|
#18+
k-nike Не хочу показаться пессимистом, но: 1. Если юзер чайник, то навряд ли он может что-то изменить. 2. А если он маломальски в этом разбирается (по крайней мере, знает про программы, которые вскрывают VBA-пароли), то ему не составит труда вскрыть файл еще до того как закончится срок действия макросов или элементарно скопировать этот файл. Тут на форуме тусуется человек, который продает VBA-пректы. У него бы поинтересоваться как их защищать, если это, конечно, не секретная информация. Кажется его MXAlex зовут или как-то так. Может лучше тогда это дело на VB переписать? Согласен, но согласитесь, чаще всего мы начинаем лезть в программу только тогда, когда она ломается... Мне например и нафиг не надо знать как работает чужой макрос, если он работает... я туда полезу только если меня что-то не устроит... На это я и расчитываю... что когда юзер будет пользовать мою прогу - она будет работать и мыслей туда лазить у него не возникнет, а когда истечет срок годности - и лазить будет некуда %)) По поводу написания такой проги на других языках - можно, но это будет уже 2 файла, один ехе и один xls(в котором всякие исходники для каждого конкретного запуска)... а это дополнительные трудности для распространения. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2006, 14:21 |
|
Удаление макросом VBA себя самого или своего модуля
|
|||
---|---|---|---|
#18+
Чем меньше будем верить умным советам, тем больше будем тратить драгоценное время: White Owl GoldenAxeВНИМАНИЕ ВОПРОС! Как программным методом (кодами в начале макроса) изменить параметры безопасности и установить соответствующую галочку? Никак. Абсолютно. White Owl GoldenAxeСлышал еще такое: Что если проект имеет цифровую подпись MicroSoft то даже эта галочка не нужна, т.к. в таком случае Excel воспринемает эту прогу как "свою родную" и разрешает любые манипуляции с макросом самим макросом. Нет. "Подписаная" и сконвертированная в add-on книга сможет только запускать имеющиеся в ней макросы без требования к пользователю включить поддержку макросов для этой книги. Но модифицировать макросы она все равно не сможет если пользователь не разрешит. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2006, 11:49 |
|
Удаление макросом VBA себя самого или своего модуля
|
|||
---|---|---|---|
#18+
White Owl GoldenAxeВНИМАНИЕ ВОПРОС! Как программным методом (кодами в начале макроса) изменить параметры безопасности и установить соответствующую галочку? Никак. Абсолютно. Короче! Все те, кто заявляет так категорично - могут отдыхать! По поводу уровня защиты - программно поменять можно, только окно Экселя должно быть закрыто. Скрипт сюда выкладывать не буду (лично - могу послать) По поводу галочки доверия доступа к VBA проектам - ставится и убирается программно "на раз" прямо на глазах пользователя и без его участия!!! И никаких гвоздей. И вообще после пары дней усиленного штудирования литературы и хелпов к VBA могу сказать одно: ТАМ МОЖНО ВСЕ, ВПЛОТЬ ДО УНИЧТОЖЕНИЯ ВСЕХ ДИСКОВ ВКЛЮЧАЯ СИСТЕМНЫЙ!!! А те, кто "где-то" "что-то" слышал про невозможность это сделать - ИДИТЕ ЛЕСОМ, УЧИТЕ МАТЧАСТЬ!!! Мной написаны коды, которые могут по определенному условию уничтожать саму рабочую книгу, все модули и макросы в ней, даже если макрос защищен паролем! а также, в случае необходимости, уничтожать свои уцелевшие копии на этом компе и на компах в сети. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.04.2006, 17:14 |
|
Удаление макросом VBA себя самого или своего модуля
|
|||
---|---|---|---|
#18+
GoldenAxe White Owl GoldenAxeВНИМАНИЕ ВОПРОС! Как программным методом (кодами в начале макроса) изменить параметры безопасности и установить соответствующую галочку? Никак. Абсолютно. Короче! Все те, кто заявляет так категорично - могут отдыхать! По поводу уровня защиты - программно поменять можно, только окно Экселя должно быть закрыто.Повнимательнее читай что сам пишешь. Если окно Экселя закрыто. Еще надо было добавить: и если Эксель не висит в памяти в режиме горячего демона, то да можно будет поменять параметры безопасности не через меню Экселя. Из макроса это сделать невозможно. GoldenAxeПо поводу галочки доверия доступа к VBA проектам - ставится и убирается программно "на раз" прямо на глазах пользователя и без его участия!!! И никаких гвоздей.Можно? Правда? Показывай. Не хочешь публично - мой емыл в профайле есть :) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.04.2006, 18:33 |
|
Удаление макросом VBA себя самого или своего модуля
|
|||
---|---|---|---|
#18+
Помнится как то автор начинал вопрос с этого кода и по моему, это код VBA??? GoldenAxeSub DeleteAllLines() ' удаляет все что написано в Модуле1 With ThisWorkbook.VBProject.VBComponents("Module1").CodeModule .DeleteLines 1, .CountOfLines End With End sub ******************* Sub DeleteModule() ' удаляет сам Модуль1 Dim vbc As VBComponent Set vbc = ThisWorkbook.VBProject.VBComponents("Module1") ThisWorkbook.VBProject.VBComponents.Remove vbc Set vbc = Nothing End sub ******************* Sub DeleteModule() ' удаляет весь макрос Dim tmp As String Dim vbc As VBComponent Dim prj As VBIDE.VBE Set prj = Excel.Application.VBE А если потом передумал, то конечно, компьютер работает под программу, и разные вирусы пишутся как обыкновенные программы, и форматирование идет программно, Но все это, не изменение уровня зашиты в Excele с помощью кода VBA О чем писал автор: GoldenAxeКак программным методом (кодами в начале макроса) изменить параметры безопасности и установить соответствующую галочку? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2006, 13:01 |
|
Удаление макросом VBA себя самого или своего модуля
|
|||
---|---|---|---|
#18+
[/quot]Можно? Правда? Показывай. Не хочешь публично - мой емыл в профайле есть :)[/quot] Послал лично... ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2006, 10:34 |
|
Удаление макросом VBA себя самого или своего модуля
|
|||
---|---|---|---|
#18+
AvtopicПомнится как то автор начинал вопрос с этого кода и по моему, это код VBA??? GoldenAxeSub DeleteAllLines() ' удаляет все что написано в Модуле1 With ThisWorkbook.VBProject.VBComponents("Module1").CodeModule .DeleteLines 1, .CountOfLines End With End sub ******************* Sub DeleteModule() ' удаляет сам Модуль1 Dim vbc As VBComponent Set vbc = ThisWorkbook.VBProject.VBComponents("Module1") ThisWorkbook.VBProject.VBComponents.Remove vbc Set vbc = Nothing End sub ******************* Sub DeleteModule() ' удаляет весь макрос Dim tmp As String Dim vbc As VBComponent Dim prj As VBIDE.VBE Set prj = Excel.Application.VBE А если потом передумал, то конечно, компьютер работает под программу, и разные вирусы пишутся как обыкновенные программы, и форматирование идет программно, Но все это, не изменение уровня зашиты в Excele с помощью кода VBA О чем писал автор: GoldenAxeКак программным методом (кодами в начале макроса) изменить параметры безопасности и установить соответствующую галочку? Да, это код VBA, а что не устраивает? И именно программным методом именно с помощью кода VBA ставится галочка Доверия доступа к VBP. И именно с помощью VBA можно поменять уровни безопасности, главное чтоб юзер хоть один раз запустил макрос... ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2006, 12:06 |
|
Удаление макросом VBA себя самого или своего модуля
|
|||
---|---|---|---|
#18+
GoldenAxeПослал лично...хм..... Почти убедил. Минусы твоего конкретного макроса: - Не будет работать на Экселях других версий. - Не будет работать на не русских Экселях. Но в принципе, да. Если этот макрос разрешить хотя бы один раз - он сделает то что нужно. Но главный минус - программная смена уровня безопасности потенциально вирусоопасна. Как только до твоего трюка додумается очередной кретин-вирусописатель этот трюк будет включен в базы антивирусов и твоя ЧЕСТНАЯ рабочая книга начнет считаться вирусом :) Лучше всего, класть инструкцию по смене уровня безопасности в дистрибутив программы. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2006, 19:04 |
|
Удаление макросом VBA себя самого или своего модуля
|
|||
---|---|---|---|
#18+
White Owl GoldenAxeПослал лично...хм..... Почти убедил. Минусы твоего конкретного макроса: - Не будет работать на Экселях других версий. - Не будет работать на не русских Экселях. Но в принципе, да. Если этот макрос разрешить хотя бы один раз - он сделает то что нужно. Но главный минус - программная смена уровня безопасности потенциально вирусоопасна. Как только до твоего трюка додумается очередной кретин-вирусописатель этот трюк будет включен в базы антивирусов и твоя ЧЕСТНАЯ рабочая книга начнет считаться вирусом :) Лучше всего, класть инструкцию по смене уровня безопасности в дистрибутив программы. Да, на счет минусов согласен, но ведь никаких проблем узнать версию Excel и Винды нет, Sub ExcelVersion() On Error Resume Next Dim objShell Dim vatReturn Set objShell = CreateObject("WScript.Shell") vatReturn = objShell.RegRead( _ "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Excel.Application\CurVer\") MsgBox vatReturn End Sub Так же можно установить и версию Винды. А на счет антивирусов - да, это к сожалению останется... но где наша не пропадала? %)) Найдем и как это обойти %))) Главное таким "макаром" можно сделать очень многие полезные и не очень вещи %))) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2006, 10:03 |
|
Удаление макросом VBA себя самого или своего модуля
|
|||
---|---|---|---|
#18+
GoldenAxe Мне НЕ НАДО воздействовать на другие файлы и программы, надо только "лицензировать" свою.Тоже приходится писать на VBA софт открытым текстом, так что о защите думал так же как и Вы. и пришел к тому, что скинул я весь код в ActiveX dll. Пишу код для CAD, а не для Excell. Но интерфес думаю будет похожий вот все манипуляции. 1)ActiveX DLL (project name SMELCAD см. GetInterfaceObject ниже) SmeLCAD.dll В References нужно будет добавить все то для чего пишешь. Код: plaintext 1. 2. 3. 4.
2)Макрос в CAD Код: plaintext 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2006, 10:56 |
|
Удаление макросом VBA себя самого или своего модуля
|
|||
---|---|---|---|
#18+
SmeL_md GoldenAxe Мне НЕ НАДО воздействовать на другие файлы и программы, надо только "лицензировать" свою.Тоже приходится писать на VBA софт открытым текстом, так что о защите думал так же как и Вы. и пришел к тому, что скинул я весь код в ActiveX dll. Пишу код для CAD, а не для Excell. Но интерфес думаю будет похожий вот все манипуляции. 1)ActiveX DLL (project name SMELCAD см. GetInterfaceObject ниже) SmeLCAD.dll В References нужно будет добавить все то для чего пишешь. Код: plaintext 1. 2. 3. 4.
2)Макрос в CAD Код: plaintext 1. 2. 3. 4. 5. 6.
Да, такой вариант существует, но сложность в том, что проги я пишу для ламеров, которым будет сложно объяснить наличие ДВУХ файлов вместо одного и обязательность прописывания dll-библиотеки... ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2006, 13:45 |
|
Удаление макросом VBA себя самого или своего модуля
|
|||
---|---|---|---|
#18+
А инсталляторы для чего придума :) ? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2006, 14:00 |
|
Удаление макросом VBA себя самого или своего модуля
|
|||
---|---|---|---|
#18+
Собственно, если галочка на форме, то что мешает открыть эту форму, кинуть туда эту галочку, а потом закрыть. Да на Vasic-е это не так-то просто, но с помощью WinApi почти любое приложение сдаётся на ура. Как вариант - записать тело EXE-файла внутрь Макроса, а потом, когда надо - сложить на диск и запустить. Пользователь увидит, что что-то мелькнуло на экране - и ВСЁ. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2007, 15:38 |
|
Удаление макросом VBA себя самого или своего модуля
|
|||
---|---|---|---|
#18+
Артем GИнтересно... раз мешает пароль может на каком то этапе его прогрмно убрать? White Owl GoldenAxeВНИМАНИЕ ВОПРОС! Как программным методом (кодами в начале макроса) изменить параметры безопасности и установить соответствующую галочку? Никак. Абсолютно. убрать пароль на какомто этапе возможно, как потом закрыть доступ к открытому проекту - ВОТ ТРАБЛ, его надо либо выгрузить без закрытия кнаги при помощи какой нибудь функции обратной Getobject либо перезапустить VBAProject также без закрытия кнаги Я тоже хочу защитить свои авторские права как и задумка таже GoldenAxeЯ НЕ ПИШУ ВИРУСЫ, дело в том, что я продаю свои мелкие программки на VBA и хочу защитить свои авторские права. Мне надо чтобы после определенной даты или после определенного кол-ва запуска программы она удаляла сама себя. Мне НЕ НАДО воздействовать на другие файлы и программы, надо только "лицензировать" свою. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2008, 10:42 |
|
Удаление макросом VBA себя самого или своего модуля
|
|||
---|---|---|---|
#18+
Граждане, а готового решения так ни у кого и не появилось? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2009, 15:07 |
|
Удаление макросом VBA себя самого или своего модуля
|
|||
---|---|---|---|
#18+
> Автор: haria > Граждане, а готового решения так ни у кого и не появилось? Да какое решение, всю защиту можно снять и посмотреть програмный код не открывая файл! Какое решение вы хотите? Удалить модуль, я думаю можно, сам удалять не пробовал, только добавлял, но для этого нужно поставить птицу доверять доступ к Visual Basic Project, поле этого только можно что-то делать програмно с кодом и то, после пререзапуска екселя. Т.е. что-то должно поменять значение в реестре до запуска макросов, переоткрыть ексель и запустить макрос. Не вижу проблем. Делайте, расказывайте о результатах, удачи! Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2009, 15:58 |
|
Удаление макросом VBA себя самого или своего модуля
|
|||
---|---|---|---|
#18+
Игорь Горбонос, В том то и дело - от асов не защитишся, да и незачем - надо будет, и сами напишут, что им нужно. главное - от "умного" юзера защитить. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2009, 16:05 |
|
Удаление макросом VBA себя самого или своего модуля
|
|||
---|---|---|---|
#18+
Может не вовремя :), но просмотрев тему и не увидев конкретного решения решил предложить своё: GoldenAxeНО!!! если Excel закрыт - то поменяв этот параметр при следующем запуске Excel галочка ПОЯВЛЯЕТСЯ!!! Т.е. надо чтоб скрипт сработал при закрытом Экселе!!! Как это можно сделать? Может макрос закрыть Excel и продолжать работать из оперативной памяти? При запуске Эксел считывает данные из реестра, т.е. 1. запускаем Эксель 2.Разрешаем макросы и меняем доверие к проэктам ВБА в реестре 3. Запускаем новое окно Экселя, после чего текущее можно закрыть. программно где-то так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2010, 18:57 |
|
Удаление макросом VBA себя самого или своего модуля
|
|||
---|---|---|---|
#18+
boa_KAA, Подскажите, пожалуйста, каким образом макрос вообще начнет запускаться, если установлен высокий уровень безопасности? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2010, 21:23 |
|
Удаление макросом VBA себя самого или своего модуля
|
|||
---|---|---|---|
#18+
GoldenAxe, на сколько я помню, на проект VBA в Excel можно поставить пароль, т.е. без него нельзя посмотреть и изменить код макроса. Вот в таком "защищенном" коде и делайте различные проверки. Хотя не знаю, может этот пароль уже давно взламывают. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2010, 06:24 |
|
Удаление макросом VBA себя самого или своего модуля
|
|||
---|---|---|---|
#18+
GoldenAxe, спасибо за код, отправленный мне на Email, все работает: галочка в "Доверять доступ к VBP" ставится, макрос сам себя удаляет. Минус: если код разместить в книге для выполнения при открытии, ругается антивирус (McAfee), но это можно обойти. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2010, 19:09 |
|
Удаление макросом VBA себя самого или своего модуля
|
|||
---|---|---|---|
#18+
я так понял макросы написанные на ВБА, можно сохранить в .dll, её через Референс добавит и пользоваться Это сложно?? Есть где примеры, почитать?? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2010, 19:43 |
|
Удаление макросом VBA себя самого или своего модуля
|
|||
---|---|---|---|
#18+
GoldenAxe, если не сложно, прошу выслать код макроса, кот. ставит "галочку" на доверии к проектам, что позволит немножко защитить свои авторские права. Позарез нужно ... ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2011, 18:59 |
|
Удаление макросом VBA себя самого или своего модуля
|
|||
---|---|---|---|
#18+
да что уж, если не сложно на всеобщее обозрение ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2011, 19:15 |
|
Удаление макросом VBA себя самого или своего модуля
|
|||
---|---|---|---|
#18+
Как вариант, с некоторыми недостатками: - привязка к имени, - Каспер матюкается... ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2011, 16:29 |
|
Удаление макросом VBA себя самого или своего модуля
|
|||
---|---|---|---|
#18+
Можно обрезать, удалив Module2, кот. собственно говоря, для наглядности + закомментировать "Exit". ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2011, 16:32 |
|
Удаление макросом VBA себя самого или своего модуля
|
|||
---|---|---|---|
#18+
GoldenAxe, А что если файл сохранить в каком-нибудь древнем формате, например в xlExcel4 (проект VBA точно не перенесет этого). У меня получилось подобное сделать только в Excel2003 - ничего не осталось и "доступ к Visual Basic Project" был не разрешен. Код такой (я сам тот ещё дилетант, так что любые исправления и дополнения охотно и с благодарностью принимаю): Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Помогите пожалуйста, сделать код который будет работать от Excel2003 и выше. Основная идея - оставить пустой файл. Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2014, 11:21 |
|
Удаление макросом VBA себя самого или своего модуля
|
|||
---|---|---|---|
#18+
rubberman.... .Основная идея - оставить пустой файл. Спасибо! о ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2014, 22:01 |
|
Удаление макросом VBA себя самого или своего модуля
|
|||
---|---|---|---|
#18+
GoldenAxe, Здравствуйте! Нахожусь в положении, близком к Вашему. Единственная разница - хочу уничтожить документ Xlam по истечении срока лицензии или переносе на другой комп. Не могли бы выслать свой код для уничтожения Документа и/или его страниц и кодов? С Благодарностью М.К. PS Прошёл к Вам со страницы http://www.sql.ru/forum/278951/udalenie-makrosom-vba-sebya-samogo-ili-svoego-modulya PPS А как Вам приём, предложенный пользователем Vlad_k9? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2018, 16:49 |
|
|
start [/forum/topic.php?all=1&fid=60&tid=2155044]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
29ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
87ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 172ms |
0 / 0 |