Страницы: 1
RSS
Защита Exel
 
Будете смеяться но,.. Попробовал защитить РАБОТАЕТ, только вот как теперь документ открыть.  
Номер у меня C4B983A7.  
Способ должен быть, остановить выполнение макроса????  
 
Private Sub Workbook_Open()  
If Hex$(CreateObject("Scripting.FileSystemObject").GetDrive("C").SerialNumber) <> BE164BD1 Then  
ThisWorkbook.Close False  
End If  
End Sub
 
Способ, конечно, есть.  
Отключите макросы, откройте файл "защищённый" файл, внесите изменения в код, снова включите макросы.  
 
PS: Для включения / отключения макросов требуется перезапуск Excel
 
Обратите внимание - BE164BD1 в коде надо ставить в кавычки.  
Сейчас же сравнение идёт со значением переменной BE164BD1, значение которой равно пустой строке.  
Таким образом, файл будет закрываться при любом серийном номере HDD  
 
Правильно будет так:  
If Hex$(CreateObject("Scripting.FileSystemObject").GetDrive("C").SerialNumber) <> "BE164BD1" Then  
ThisWorkbook.Close False  
End If
 
EducatedFool, спасибо работает.  
А можно перечислить серийники для 2 HDD? 2 разных компа. Если можно подскажите.
 
А ничего, что ув. EducatedFool описал Вам, как такая защита за 3 секунды отключается?
Я сам - дурнее всякого примера! ...
 
Тогда добавьте ещё одно условие в проверку:  
If Hex$(CreateObject("Scripting.FileSystemObject").GetDrive("C").SerialNumber) <> "BE164BD1" Or <Второе условие> Then
 
{quote}{login=Юрий М}{date=19.12.2010 01:04}{thema=}{post}Тогда добавьте ещё одно условие в проверку:  
If Hex$(CreateObject("Scripting.FileSystemObject").GetDrive("C").SerialNumber) <> "BE164BD1" Or <Второе условие> Then{/post}{/quote}Не Юр, так:  
Private Sub Workbook_Open()  
If Not (Hex$(CreateObject("Scripting.FileSystemObject").GetDrive("C").SerialNumber) = "BE164BD1" _  
Or Hex$(CreateObject("Scripting.FileSystemObject").GetDrive("C").SerialNumber) = "C4B983A7") Then  
ThisWorkbook.Close False  
End If  
End Sub
Я сам - дурнее всякого примера! ...
 
Дима исправил свой пост:-)
Я сам - дурнее всякого примера! ...
 
{quote}{login=KukLP}{date=19.12.2010 01:08}{thema=Re: }{post}{quote}{login=Юрий М}{date=19.12.2010 01:04}{thema=}{post}Тогда добавьте ещё одно условие в проверку:  
If Hex$(CreateObject("Scripting.FileSystemObject").GetDrive("C").SerialNumber) <> "BE164BD1" Or <Второе условие> Then{/post}{/quote}Не Юр, так:  
Private Sub Workbook_Open()  
If Not (Hex$(CreateObject("Scripting.FileSystemObject").GetDrive("C").SerialNumber) = "BE164BD1" _  
Or Hex$(CreateObject("Scripting.FileSystemObject").GetDrive("C").SerialNumber) = "C4B983A7") Then  
ThisWorkbook.Close False  
End If  
End Sub{/post}{/quote}  
Дык и я о том же :-)
Страницы: 1
Читают тему
Наверх