Da się zabezpieczyć tylko wybrane komórki, tak aby można było je edytować wpisując wcześniej hasło lub ewentualnie potwierdzać okienko “czy jesteś pewny?” ?
Miałoby to na celu ochronę ważnych (ale rzadko używanych komórek) przed przypadkową edycją.
instrukcja | kopia |
---|---|
Zrobiona kopia stron jakby za 10 lat linki nie działały i ktoś dalej używał starego office - o ile sama kopia nie padnie, bo braknie finansów na jej utrzymanie.
Tylko wydaje mi się, że to co podałeś umożliwia odblokowanie na stałe komórki po uruchomieniu arkusza, a ja chciałbym, aby przy każdej zmianie danej komórki program dawał jakąś informację. Czy jest to wykonalne?
W sumie tak.
Z libreoffice:
Jeśli ochrona ma dotyczyć tylko zmian w komórkach, nie należy wprowadzać hasła.
Trzeba by sprawdzić czy będzie wyskakiwać komunikat.
Jak nie ma nigdzie tego w Excelu / calcu to by trzeba pewnie użyć skryptu VBA / skrypt do zdarzeń https://help.libreoffice.org/Common/Scripting/pl#Aby_przypisa.C4.87_skrypt_do_zdarzenia
Przykład skryptu VBA do Excela - https://stackoverflow.com/questions/28772036/excel-vba-creating-a-confirmation-prompt-when-a-cell-is-edited - nie wiem na ile gotowiec i jak jest z kompatybilnością z nowszymi wersjami Excel. Opis z poradnika Microsoft - https://support.microsoft.com/en-us/help/213612/how-to-run-a-macro-when-certain-cells-change-in-excel - też do sprawdzenia czy np. zachowuje starsze dane, jakbyś jednak chciał cofnąć.
http://www.excelblog.pl/excel-timestamp-data-zmiany-wkomorce/ - raczej mało wygodne może w skrypcie byłoby lepsze.
Nie wiem czy Cię coś takiego zainteresuje, ale używam czegoś w ten deseń w swoim arkuszu w pracy. Cały arkusz zablokowany jest hasłem, tylko jedna kolumna ma swobodny dostęp, gdzie komórki są odblokowane. Edycja zablokowanych odbywa się przy pomocy makra. Klikam na interesującą mnie komórkę (dwuklik i edycja nie działa z racji zablokowanego arkusza) i z przycisku, do którego jest podpięte makro, uruchamia się skrypt, który działa w kilku krokach:
- najpierw wyświetla się Inputbox do wpisania hasła, nawet znalazłem kod, który wpisywany w nim tekst zamienia na gwiazdki (*)
- skoroszyt jest odblokowywany
- pojawia się kolejny Inputbox, w którym widać obecną zawartość komórki
- po zmianie zawartości w inputboxie i kliknięciu “OK” zawartość w komórce się zmienia
- pozostawienie pustego Inputboxa lub wciśnięcie “ANULUJ” nie zmienia zawartości komórki
- skoroszyt jest ponownie blokowany
Wygwiazdkowanie nie działa na Excelu 64-bit. Próbowałem wszystkiego no i nie chce działać.
EDIT:
Naskrobałem jeszcze coś takiego
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ODP
If Target.Column = 1 Then
ODP = MsgBox("Na pewno chcesz zmienić wartość?", vbYesNo + vbQuestion, "EDYCJA")
If ODP = 6 Then
Else
With Application
.EnableEvents = False
.Undo
.EnableEvents = True
End With
End If
End If
End Sub
Zapodane makro po zmianie jakiejkolwiek komórki w kolumnie nr 1 pyta czy na pewno chcemy zmienić wartość. Jeżeli nie, to cofa ostatnią zmianę.
Widzę, że nie jest to wcale takie proste. Jak znajdę chwilę to na pewno to sprawdzę, ale chyba muszę się wstrzymać ok. tydzień.
Sposób którego używam w pracy jest banalnie prosty, a makro nie jest skomplikowane choć to wymaga drobnego przygotowania arkusza. Zaznaczasz wszystkie komórki w arkuszu, potem prawoklik-> formatuj komórki->zakładka zabezpieczenia i odznaczasz zablokuj komórki. Następnie wybierasz komórki, które mają być zablokowane i powtarzasz czynność, tyle ze tym razem zaznaczasz opcję “zablokuj komórki”.
By nie szukać kodu włączasz nagrywanie makra, blokujesz arkusz hasłem, następnie odblokowujesz i wyłączasz nagrywanie. Tym sposobem masz gotowy kod na odblokowanie i blokowanie arkusza. Modyfikujesz kod zamieniając odblokowanie i blokowanie miejscami. Przed nimi wstawiasz inputboxa, który pyta o hasło, potem kolejny inputbox, ktory pobiera zawartość zaznaczonej komórki, a wciśnięciu ok pozmienia jej zawartość i blokuje arkusz. Dałbym Ci gotowy kod, ale w domu mam tylko Libre Office, a kod VBA często nie działa jak należy.
EDIT:
Dołączam przykładowy arkusz. Hasło do odblokowania arkusza to “1234”, do wszelkiego rodzaju okienek to “haslo” <- bez polskich znaków
Niebieski przycisk to makro oparte o Inputbox. Akurat nie dałem wygwiazdkowania, ale to nie problem. Drugie to UserForm gdzie hasło wpisujemy w jednym okienku razem z danymi do edycji, wygwiazdkowane.
Zauważ, że makra wykonują się tylko na czerwonych komórkach, które jako jedyne w całym arkuszu są zablokowane.
Zeszyt21.zip (19,3 KB)
BTW. wybacz za taki chaos w skoroszycie, ale to ma być pogląd na działanie kodów. Dopieścić wizualnie itd. można już samemu. Do purystów programowania etc. nie jestem programistą i wszystko wypisuję tak, aby to mnie było wygodnie.
Nie rozumiem tych makr, nigdy z nich wcześniej nie korzystałem. Próbowałem coś zrobić, ale nie dałem rady. Patrzyłem co przygotowałeś, ale nic mi tam nie działa, albo coś źle robię (to bardziej prawdopodobne). Byłbyś w stanie napisać mi krok po kroku jak uruchomić to co mi dałeś w Libre Office Calc?
Jak pisałem kod VBA w Libre Calc może nie działać i raczej nie będzie działać. Na jego widzimi się nie mam rady, bo on totalnie interpretuje komendy po swojemu, a poza tym posiada własne metody na makra. W nim makr nie robię bo kompatybilność tego w MS Excel jest zerowa, a nie spotkałem się by gdziekolwiek ktoś do takich rzeczy wykorzystywał Libre. To tak jakby uczyć się pisania makr drugi raz.
Hej,
Jeśli dobrze pamiętam, w LibreOffice’ie makra pisze się w Javie. Na pewno nie są obsługiwane makra w VB.
Pozdrawiam,
Dimatheus
No to jest problem, bo miałem nadzieję, że plik będzie działał zarówno na MS i Libre.
Czy w WPS będzie to działać?
Trzeba by przetestować - http://kingsoftoffice.desk.com/customer/portal/articles/1551904-using-macros-
Sorry, ale dopiero teraz miałem czas by tam zajrzeć poprzez Libre. W Libre przypisanie makr do przycisków nie działa, trzeba na nowo je przypisać, a to, które używa Userform w ogóle nie chce działać - mam puste okienko. Są dwa makra - edycja i EDY2, działa to pierwsze, ale na nowo trzeba je przypisać do przycisku. Nie wiem tylko czy znowu się nie pokaszani jak odpalisz to w MS Excel, ale zawsze można zrobić dwa odrębne przyciski - jeden do libre, drugi do MS.
Chciałem właśnie zweryfikować to o czym pisał @Dimatheus, bo dobrze pamiętałem, że makra VBA działały również na Libre. Problemem są oczywiście bardziej skomplikowane makra używające bibliotek, windowsowych funkcji etc. i jak widać UserForm.
EDIT:
Kod Userform jest poprawny, ale przyciski nie chcą się pokazać. Wygląda tak, jakby tam były, ale są niewidoczne.
Hej,
To dokładnie tak samo jak z polami obliczeniowymi w tabelach przestawnych.
Pozdrawiam,
Dimatheus