Personalizacja dostępu użytkowników do danych w Excelu - makro. Automatyzacja zabezpieczeń skoroszytu

By: admin | Category: Excel | Date: Sunday, 02.July.2023, 20:13

Jeszcze 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.


Tags: #microsoftoffice, #office365, #excel, #VBA, #makro

Last 3 Comments

Recent comments



Comments (0)


Leave a comment:

* - Email is not required



There are no comments for this post.