Ochrona kodu VBA przed przeglądaniem
Ochrona makra, które jest używane przez grupę ludzi nie jest nigdy złym pomysłem i warto to stosować. Jeśli nasze makro jest częścią aplikacji tworzącej oferty albo faktury, a używają jej przedstawiciele handlowi to tym bardziej powinniśmy, bo może to prowadzić do różnych nadużyć. Inną sprawą jest ochrona samego kodu jako naszej własności intelektualnej. Nie każdy chce, by jego kod był kopiowany i krążył po sieci.
Aby zabezpieczyć makro hasłem należy:
- uruchamiamy Visual Basic Editor (Alt+F11)
- klikamy zakładkę Tools
- klikamy VBAProject Properties
- na zakładce Protection zaznaczamy Lock project from viewing i wpisujemy hasło
Teraz wystarczy zapisać, zamknąć i otworzyć ponownie nasz arkusz, by ochrona zaczęła działać.
Takie zabezpieczenie nie jest do końca skuteczne w wersjach Excela poniżej 2007. Prawda jest taka, że sprytny użytkownik przy pomocy Google sobie z tym poradzi. Dopiero Excel 2007, 2010 i nowy 2013 zapewniają całkiem przyzwoitą ochronę naszego kodu.
Zabezpieczanie makra hasłem przed uruchomieniem
Excel nie ma narzędzia, które pozwoli zabezpieczyć nasze makro przed uruchomieniem, ale możemy napisać kod, który zablokuje wykonywanie makra do momentu podania hasła. Skorzystamy z metody InputBox i będziemy porównywać dwa łańcuchy tekstu: nasze hasło i hasło wprowadzone przez użytkownika.
Kod naszego makra:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Sub chronione_makro()
Const passphrase As String = "tu_hasło"
Dim user_passphrase As String
user_passphrase = InputBox("Wprowadź hasło: ", "Kontrola dostępu!", "*********")
If user_passphrase <> passphrase Then
Call MsgBox("Hasło nieprawidłowe.", vbOKOnly + vbExclamation, "Odmowa dostępu!")
Exit Sub
Else
[TU KOD MAKRA]
End If
End Sub
|
Osobiście wolę, gdy ilość prób jest ograniczona np. do trzech. Aby to zrobić należy użyć pętli While:
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 |
Sub chronione_makro()
Const passphrase As String = "tu_hasło"
Dim user_passphrase As String
Dim i As Byte
Dim access_granted As Boolean
Do While i < 3
user_passphrase = InputBox("Wprowadź hasło: ", "Kontrola dostępu!", "*********")
i = i + 1
If user_passphrase = passphrase Then
access_granted = True
Exit Do
Else
Call MsgBox("Hasło nieprawidłowe. Pozostało prób: " & 3 - i, vbOKOnly + vbExclamation, "Odmowa dostępu!")
End If
Loop
If access_granted = False Then
Call MsgBox("Ten arkusz zostanie zamknięty.", vbOKOnly + vbCritical, "Odmowa dostępu!")
ActiveWorkbook.Save ' jeśli plik ma zostać zapisany
ActiveWindow.Close
Else
[TU KOD MAKRA]
End If
End Sub
|
W ten prosty sposób zabezpieczymy kod naszego makra i wykonywanie makra przed nieupoważnionymi osobami. Po niewielkich przeróbkach możemy to makro wywoływać z poziomu innych procedur, gdy w obrębie arkusza jest więcej niż jedna, którą chcemy zabezpieczyć.
słowa kluczowe: vba hasło, hasło vba excel, funkcje excela po angielsku, formuły excel po angielsku, excel tłumaczenie funkcji, tłumaczenie funkcji excel, excel nazwy funkcji po angielsku, makro pdf, rozdzielenie imienia i nazwiska excel, pesel weryfikacja

















