Calc - ochrona danych, arkusza i skoroszytu.

Uwaga: przeglądasz tę stronę na urządzeniu o niewielkim ekranie (szerokość < 640px). Niektóre zamieszczone w artykule ilustracje i animacje mogą stać się nieczytelne po dopasowaniu ich do rozdzielczości tego ekranu.

Yestok.pl

Jerzy Moruś

© Wszystkie prawa zastrzeżone. Wykorzystanie całości serwisu lub jego fragmentów bez pisemnej zgody autora zabronione.

Ochrona arkusza przed nieautoryzowanymi zmianami.



Opracowanie powstało w oparciu o wersję programu istniejącą w trakcie jego pisania, Libre Office: 4.3.5, Apache OpenOffice: 4.1.1.


Jednym z problemów, z jakim spotka się autor oprogramowania tworzonego w arkuszach kalkulacyjnych jest zachowanie integralności arkusza w takim stopniu aby użytkownicy korzystający z obliczeń nie naruszali struktury arkusza ani algorytmów obliczeniowych. To ważne zagadnienie, bowiem nieuważny użytkownik może wpisać coś do komórki zawierającej formułę albo usunąć kolumnę, psując tym samym funkcjonalność arkusza. O tym, jak kontrolować to, co użytkownik wpisuje do komórek napisałem w opracowaniu poświęconym sprawdzaniu poprawności danych. W przypadku programu Calc opracowanie można przeczytać tutaj. Poniżej, jak się bronić przed niechcianymi ingerencjami.

Arkusz kalkulacyjny ma wbudowany mechanizm pozwalający na ochronę zawartości komórki:

Ponadto odrębny mechanizm chroni cały projekt przed dokonywaniem zmian w warstwie ogólnej, takiej jak ilość, kolejność i nazewnictwo arkuszy w projekcie.

Najpierw jednak o tym pierwszym mechanizmie. Dzięki niemu możemy sprawić, że arkusz nie pozwoli na ręczne zmodyfikowanie zawartości komórki, nie ujawni treści formuły wpisanej do komórki ani nie wydrukuje zawartości komórki.

Ten system ochrony jest dwupoziomowy. Na pierwszym poziomie ustalamy sposób ochrony poszczególnych komórek. Wszystkie ustawienia dokonane na tym poziomie nie mają bezpośredniego wpływu na funkcjonowanie i wygląd arkusza. Dopiero uaktywnienie ochrony, i to jest ten drugi poziom, powoduje, że arkusz zacznie się zachowywać zgodnie z ustalonymi zasadami.

Za pierwszy poziom ustawień odpowiada polecenie formatowania komórek, a dokładniej zakładka „Ochrona komórek”. Okno dialogowe tego polecenia pokazuje rys. 1.

Okno dialogowe formatowania komórek, zakładka "Ochrona komórek".
Rys. 1: Zakładka „Ochrona komórek” okna dialogowego formatowania komórek.

W tym oknie występują dwie sekcje: pierwsza dotycząca ochrony i druga dotycząca drukowania. Ustawienia w sekcji dotyczącej drukowania są jednopoziomowe. Oznacza to, że ich zastosowanie od razu wpływa na arkusz. Jeśli więc komórce lub grupie komórek przypisany zostanie atrybut „Ukryj na wydruku” to zawartość tych komórek nie zostanie wydrukowana.

Sekcja „Ochrona” ma trzy ustawienia, jedno nadrzędne Ukryj wszystko” i dwa podrzędne „Chronione” i „Ukryj formułę”.

W nowym, czystym arkuszu wszystkie komórki mają z definicji włączoną tylko jedną opcję – „Chronione”. Zaznaczona opcja oznacza, że do tych komórek nie można ręcznie wprowadzić żadnego wpisu. Nie można zatem ani zmienić wpisanych liczb, ani wprowadzić formuły.

Mimo tego arkusz – jak każdy to zauważył – jest jednak przez nas normalnie tworzony. Wpisujemy wartości, formuły i teksty. Jest tak dlatego, że nie jest włączony mechanizm ochrony. Komórki mają już przypisane właściwości, lecz nie są one jeszcze uaktywnione.

Przygotowując arkusz do użytkowania powinniśmy wykasować opcję „Chronione” w tych komórkach, do których użytkownicy będą mogli coś wpisywać. Pozostałe, zawierając ustawioną opcję „Chronione” nie pozwolą na wpisanie do nich czegokolwiek z klawiatury.

Opcja „Ukryj formułę” oznacza, że jeżeli zawartością komórki jest formuła, to nie zostanie ona ujawniona w pasku formuły. Wynik formuły w komórce jest oczywiście wyświetlony. Ustawienie tej opcji ma nieco szersze działanie. Nawet gdy użytkownik zechce ustawić wyświetlanie w komórce formuł, a nie ich wyników, to komórki oznaczone tą opcją zachowują się tak jakby były puste.

Przy tej okazji przypomnę, że wywołując polecenie „Narzędzia – Opcje...”, a następnie w gałęzi „Calc – Widok” włączając opcję „Formuły” w sekcji „Wyświetl” spowodujemy, że zamiast wyników formuł w komórkach pojawią się wpisane formuły. To samo działanie realizuje skrót klawiaturowy CTRL+` (apostrof lewy, znajdujący się zazwyczaj na pierwszym, lewym górnym klawiszu razem z symbolem ~).

Nadrzędna opcja „Ukryj wszystko” włącza ochronę komórek i ukrywanie ich zawartości. W tym jednak przypadku ukrywana jest zawartość komórki, a nie tylko formuła. Włączenie tej opcji nie zmienia ustawień nadanych komórkom w opcjach podrzędnych i jeśli opcja ta zostanie dla komórki wyłączona to komórce będą nadal przypisane opcje podrzędne.

Po przypisaniu komórkom arkusza właściwych atrybutów można włączyć lub wyłączyć system ochrony. W obu wersjach programu Calc – tzn. LibreOffice i Apache OpenOffice – realizuje to polecenie „Narzędzia – Chroń dokument – Arkusz...”. Położenie tego polecenia przedstawia rys. 2.

Polecenie włączające ochronę arkusza.
Rys. 2: Umiejscowienie polecenia włączającego ochronę arkusza.

Ponadto w arkuszu kalkulacyjnym LibreOffice można to polecenie przywołać z podręcznego menu, dostępnego po kliknięciu prawym przyciskiem myszy w nazwę arkusza. To menu przedstawia rys. 3.

Podręczne menu dostępne w arkuszu kalkulacyjnym Calc LibreOffice.
Rys. 3: Polecenie „Chroń arkusz” w menu podręcznym programu Calc LibreOffice.

Wynik wykonania tego polecenia, niezależnie od sposobu wywołania, zależy od tego, czy dotyczy arkusza z wyłączoną, czy włączoną ochroną. Jeśli arkusz nie miał włączonej ochrony pojawi się okno dialogowe „Chroń arkusz” takie jak na poniższej ilustracji.

Okno ustalania hasła ochrony i dostępności komórek.
Rys. 4: Okno dialogowe ochrony arkusza.

Opcja „Chroń ten arkusz oraz zawartość zablokowanych komórek” (w Calc Apache OpenOffice ten napis kończy się na literze „e”) jest zaznaczona i jeśli rzeczywiście chcemy włączyć mechanizmy ochrony, musi taką pozostać. Jej wyłączenie zdezaktywuje przycisk „OK” i nie będzie można wykonać tej operacji.

Włączając ochronę arkusza możemy zadecydować o sposobie zdejmowania tej ochrony. Mianowicie, jeśli zostanie określone hasło, to podczas zdejmowania ochrony będzie trzeba je podać. To oznacza, że zdjąć ochronę i dokonać poprawek w arkuszu może tylko ten, kto zna hasło. W oknie dialogowym w polu „Hasło” należy wpisać hasło a w polu „Potwierdź” wpisać je ponownie. Taki sposób wprowadzania hasła (znany zresztą także z innych systemów, np. poczty, systemów bankowych itp.) ma chronić użytkownika przed wprowadzeniem hasła z niezamierzoną literówką. Znaki wprowadzanego hasła prezentowane są bowiem w okienku wprowadzania w postaci gwiazdek i nie widać ewentualnej własnej pomyłki. Dlatego wpisywanie tego samego ciągu znaków po raz drugi, pozwala zweryfikować czy użytkownik wpisał takie same znaki jak w pierwszym polu.

Chroniąc arkusz za pomocą hasła musimy pamiętać, że zapomnienie go uniemożliwi nam zdjęcie ochrony a więc dokonania zmian lub poprawek w arkuszu.

Można także nie wprowadzać hasła, wówczas arkusz będzie chroniony bez hasła. Taki sposób ochrony, bez hasła, można stosować po to by przetestować funkcjonowanie arkusza z włączona ochroną.

Okno zawiera także dwie dodatkowe opcje: „Wybierz zablokowane komórki” i „Wybierz odblokowane komórki”. Opcje te decydują, jakie komórki można uaktywnić w chronionym arkuszu. Jeśli w chronionym arkuszu obie opcje zostaną wyłączone to nie będzie w nim można uaktywnić (czyli przejść do) żadnej komórki ani za pomocą klawiatury, ani za pomocą myszki. Jeśli ustawiona będzie tylko opcja „Wybierz zablokowane komórki”, to co prawda można będzie przejść do dowolnej zablokowanej komórki, ale i tak nie będzie można niczego do niej wpisać.

Przycisk „OK” w oknie dialogowym uaktywnia ochronę i zamyka okno.

Zdejmowanie ochrony realizuje się jak już wspomniałem tym samym poleceniem, jakim ją założono, z tym, że jeśli arkusz był chroniony bez użycia hasła, nastąpi natychmiastowe zdjęcie ochrony. Jeśli było wprowadzone hasło to pojawi się okienko dialogowe jak na rys. 5.

Okienko dialogowe odblokowania arkusza chronionego hasłem.
Rys. 5: Okienko dialogowe odblokowania arkusza chronionego hasłem.

W tym okienku należy wpisać wymagane hasło. Wpisanie błędnego hasła skutkuje pojawieniem się komunikatu o niepoprawnym haśle. Calc nie ma limitu prób wprowadzania hasła.

W kilkuarkuszowym projekcie każdy arkusz może być chroniony oddzielnym hasłem, jeśli jednak chcemy ochronić tym samym hasłem kilka arkuszy, możemy je najpierw zaznaczyć, a następnie wywołać polecenie „Narzędzia – Chroń dokument – Arkusz...”. Tylko tym sposobem można ochronić kilka arkuszy jednym wywołaniem polecenia. Ochronę można zdejmować indywidualnie każdemu arkuszowi albo po zaznaczeniu arkuszy mających to samo hasło ochrony – większej ich liczbie. Jeżeli w grupie zaznaczonych arkuszy znajdą się takie, które są chronione innymi hasłami, to odblokowane zostaną tylko arkusze o wprowadzonym haśle. Pozostałe wygenerują komunikat o błędnym haśle.

O czym należy wiedzieć?
Gdy arkusz jest chroniony i zawiera chronione komórki nie można w nim dodać ani usunąć wierszy albo kolumn. Każda próba wpisania do komórki chronionej jakiejkolwiek treści kończy się komunikatem ostrzegającym. Przykład takiego komunikatu z programu Calc LibreOffice przedstawia rys. 6.

Komunikat informujący o próbie wprowadzenia znaków do komórki chronionej.
Rys. 6: Komunikat z programu Calc LibreOffice.

Inaczej także wygląda menu podręczne wywoływane prawym przyciskiem myszy w obrębie arkusza. Poniżej dwie ilustracje menu podręcznego wywołanego w komórce arkusza z ustawioną opcją „Chronione” przy wyłączonej i włączonej ochronie.

Przykład menu kontekstowych arkusza z wyłączoną i z włączoną ochroną.
Rys. 7: Menu podręczne zależne od statusu ochrony arkusza.

Po lewej stronie widok menu podręcznego w sytuacji wyłączonej ochrony arkusza. Menu zawiera zestaw poleceń pozwalających na modyfikację komórki. Po prawej stronie menu wywołane w ten sam sposób, w tej samej komórce, wtedy gdy ochrona arkusza jest włączona. Dostępne jest tylko jedno polecenie. Ilustracja dotyczy programu Calc w Apache OpenOffice. Podobnie jest w programie Calc LibreOffice. Jak widać możliwe jest tylko skopiowanie komórki, lecz jeśli komórka miała przypisaną opcję „Ukryj formułę” to skopiowana zostanie tylko obliczona wartość formuły, a nie jej treść. W przypadku ustawionej opcji „Ukryj wszystko”, żadna zawartość komórki nie zostanie przekopiowana.

Autorzy projektów wykorzystujący makra muszą pamiętać, że wstawienie wartości do komórki za pomocą makra jest traktowane analogicznie do wpisywania jej z klawiatury. Zatem taka komórka musi mieć zdjęty status „Chronione”.

Niezależnie od opisanego mechanizmu istnieje jeszcze jeden mechanizm ochrony, zabezpieczający projekt w jego ogólnej formie.

Ten drugi mechanizm chroni strukturę projektu przed zmianami i jego uaktywnienie nie pozwala na manipulowanie arkuszami. Nie można więc dodawać nowych arkuszy ani usunąć istniejących. Nie można zmienić nazw przypisanych arkuszom ani zmienić ich kolejności. W tak zabezpieczonym projekcie nie można „odkryć” arkuszy ukrytych ani ukryć arkuszy widocznych.

Włączenie tego typu ochrony lub wyłączenie, która jest jak już wspomniałem niezależna od ochrony arkuszy, wykonać można tylko za pomocą polecenia „Narzędzia – Chroń dokument – Dokument...”. Jeżeli projekt nie był chroniony to wywołanie polecenia otworzy okno dialogowe, w którym – podobnie jak w przypadku włączania ochrony arkusza – można podać hasło pozwalające w przyszłości tę ochronę „zdjąć”. Okno ma wygląd pokazany poniżej.

Okno dialogowe włączające ochronę projektu.
Rys. 8: Okno aktywacji ochrony projektu.

Brak hasła oznacza, że projekt będzie chroniony bez hasła, zatem ponowne wywołanie tego polecenia zdejmie tę ochronę niezwłocznie. Jeśli hasło zostało ustanowione trzeba będzie je podać w okienku dialogowym.

O tym, czy projekt i arkusze są chronione informuje znacznik („ptaszek”) postawiony przy nazwie polecenia. Pokazuję to na rysunku 9.

Położenie znaczników informujących o statusie ochrony arkusza i projektu.
Rys. 9: Znaczniki informujące o włączonej ochronie.

Znacznik przy pozycji „Arkusz...” dotyczy aktualnie aktywnego arkusza. Znacznik przy pozycji „Dokument...” dotyczy całego projektu.

W programie Calc LibreOffice, w którym możliwe jest włączanie ochrony arkusza z menu podręcznego, wywołanego po kliknięciu prawym przyciskiem myszy na nazwie arkusza, znacznik pojawia się przy poleceniu w tym menu. Widać to poniżej na ilustracji.

Położenie znacznika ochrony arkusza w menu podręcznym w Calc LibreOffice.
Rys. 10: Znacznik włączonej ochrony w menu podręcznym Calc LibreOffice.

Proszę zwrócić uwagę na to, że menu to jest znacznie ograniczone w stosunku do tego pokazanego na rys. 3. Jest tak dlatego, że ilustracja obrazuje stan tego menu przy włączonej ochronie projektu. Z menu zniknęły więc wszystkie polecenia, które wpływają na projekt jako całość.

Umiejętne zastosowanie opisanych mechanizmów ochrony pozwoli autorowi projektu na zabezpieczenie go przed nieautoryzowanymi zmianami, przypadkowym nadpisaniem zawartości komórek, ukrycie własnych, autorskich algorytmów zastosowanych w projekcie, a także utrzymanie założonej kolejności arkuszy i ich nazw. Nie pozwoli także na dodawanie lub usuwanie arkuszy ani na podglądanie arkuszy ukrytych.

Zapomnienie hasła może być bolesnym doświadczeniem, dlatego warto zapisać je sobie we własnej bazie haseł. Ponadto, jeśli opracowany projekt przekazujemy do używania innym użytkownikom warto we własnym repozytorium zachować wersję niechronioną.

Pozostaje jeszcze problem a co, jeśli jednak hasło zostało zapomniane? Jednym z rozwiązań jest znalezienie aplikacji, która potrafi ten problem rozwiązać. Jedną z nich jest program znajdujący się na stronach serwisu http://www.intelore.com. Znajdują się tu programy z grupy „Password Recovery” dedykowane programom biurowym. Są to jednak programy płatne. W niektórych sytuacjach jestem także w stanie pomóc, ale to już jest temat na indywidualne zgłoszenie.