Personalizacja dostępu użytkowników do danych w Excelu - makro. Automatyzacja zabezpieczeń skoroszytu
By: admin | Category: Excel | Date: Sunday, 02.July.2023, 20:13Jeszcze pracując w poprzedniej pracy (nie jako informatyk ale już bliżej informatyki :) ) - napisałem kod w języku VBA, który ułatwia trochę życie i pracę z arkuszem kalkulacyjnym Excel w przypadku, gdy chcemy dla określonego użytkownika odblokować cały arkusz – podczas gdy dla innych użytkowników pewne kolumny są zablokowane przed edycją.
Wyobraźmy sobie, że mamy arkusz Excela oraz grupę użytkowników. Ci użytkownicy mają różne poziomy dostępu do danych w arkuszu. Niektórzy użytkownicy mają pełny dostęp i mogą edytować wszystkie komórki, a inni mają ograniczony dostęp i mogą tylko przeglądać dane lub edytować wybrane kolumny.
Private Sub Workbook_Open()
Dim current_user As Variant
current_user = Environ("USERNAME")
Dim allow_user As String
' Tutaj wpisujemy nazwe uzytkownika Windows, który ma miec dostęp do wszystkiego w pliku
allow_user = "nazwa_uzytkownika_windows"
' tutaj nalezy wpisac hasło
pass = "twoje_haslo"
userComparisonResult = StrComp(current_user, allow_user, vbTextCompare)
Dim wsheet As Worksheet
If (userComparisonResult = 0) Then
'MsgBox ("Witaj " & Application.UserName)
For Each wsheet In ActiveWorkbook.Worksheets
wsheet.Unprotect pass
Next wsheet
Else:
For Each wsheet In Worksheets
wsheet.Unprotect pass
wsheet.Cells.Locked = False
wsheet.Range("H:H").Locked = True 'linia dotyczaca blokady konretnej kolumny
wsheet.Protect pass, _
AllowSorting:=True, _
AllowFiltering:=True
Next wsheet
End If
End Sub
Kod powyżej automatycznie dokonuje zabezpieczeń skoroszytu. Wystarczy określić nazwę użytkownika, który ma mieć pełny dostęp, oraz ustawić hasło do odblokowania skoroszytu – chociaż ono nie będzie, aż tak znaczące. Reszta zostanie wykonana przez kod.
Kiedy arkusz zostanie otwarty, kod automatycznie sprawdzi nazwę aktualnie zalogowanego użytkownika, który otwiera plik. Jeśli użytkownik jest uprawniony (czyli jego nazwa odpowiada nazwie użytkownika z pełnym dostępem), wszystkie arkusze zostaną odblokowane, umożliwiając pełną edycję.
Oznacza to, że już nie trzeba pamiętać ani wpisywać hasła przy każdym uruchomieniu pliku Excel. Kod VBA samodzielnie rozpozna zalogowanego użytkownika i podejmie odpowiednie działania w zależności od jego uprawnień. Jest to ogromne ułatwienie, szczególnie w przypadku współdzielenia plików z wieloma użytkownikami o różnych poziomach dostępu.
Natomiast, dla użytkowników o ograniczonym dostępie, kod zablokuje wybrane kolumny (np. U mnie jest to kolumna H). W ten sposób dane są chronione przed nieautoryzowanymi zmianami, jednocześnie umożliwiając użytkownikom korzystanie z funkcji sortowania i filtrowania.
Z tym kodem, wystarczy uruchomić plik Excel i kod zostanie automatycznie wykonany przy otwarciu skoroszytu. Niezależnie od tego, czy użytkownik ma pełny dostęp do danych, czy też dostęp jest ograniczony, kod odpowiednio odblokuje lub zabezpieczy arkusze, zapewniając odpowiednie uprawnienia.
Użycie makra jest nie tylko wygodnym rozwiązaniem, ale również skutecznym narzędziem do zabezpieczania danych w arkuszach Excela. Umożliwia on spersonalizowane zarządzanie dostępem użytkowników, chroniąc poufność danych i zapobiegając niechcianym modyfikacjom.
Dodatkowo należy pamiętać, aby zapisać plik w odpowiednim rozszerzeniu po wklejeniu kodu VBA. Aby to zrobić, można wybrać opcję "Zapisz jako" w programie Excel i wybrać format ".xlsm". Upewnienie się, że plik ma prawidłowe rozszerzenie,
TL:DR:
Napisałem kod, który automatycznie odblokowuje wszystkie arkusze w skoroszycie, jeśli aktualnie zalogowany użytkownik systemu Windows jest taki sam jak określony w zmiennej. W przeciwnym razie blokuje kolumnę H na wszystkich arkuszach, a reszta kolumn pozostaje odblokowana.
Last 3 Comments
Recent comments
-
SIema wrote comment in post:
- Postfix Error: said: 554 sorry, mailfrom without . in domain is administratively denied
Comments (0)
Leave a comment:
There are no comments for this post.