Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Excel - odkrywanie kolumn tylko przez wybranych użytkowników

Gandalf67 09 Lut 2011 11:43 10270 19
  • #1 09 Lut 2011 11:43
    Gandalf67
    Poziom 9  

    Zapewne nietypowe pytanie ale taki już mój los..... Zrobiłem całkiem spory arkusz do którego wprowadzane są dane z informacjami, co w danym dniu pracownicy wykonywali. W końcowych kolumnach są przeliczane ich wyniki końcowe. Problem w tym, że arkusz jest otwarty dla wszystkich, bo każdy coś tam edytuje (ze swojego komputera) i dane końcowe, które powinny być poufne - takimi nie są. Ukryłem je (kolumny) przed ciekawskim okiem z zastosowaniem makra przywiązanego do przycisku w pasku poleceń ale jak wiadomo kolumny można odkryć "ręcznie" - więc lipa. I tu moje pytanie: czy jest metoda aby ukryć żądane kolumny i umożliwić odkrywanie ich tylko wybranym osobom (czyli: specyficzny login - jest u nas duża sieć intranetowa) bez potrzeby wpisywania jakikolwiek haseł. Np. Jan_Kowalski loguje się do sieci i bez przeszkód edytuje a już Stefan_Nowak - nie.

    0 19
  • #2 09 Lut 2011 14:27
    adamas_nt
    Moderator Programowanie

    Jeśli już masz makro ukrywania/odkrywania kolumn to:
    podpowiedź 1. W arkuszu chronionym nie można odkryć kolumn
    podpowiedź 2. Ochronę z hasłem można zrealizować w makro, konieczna ochrona kodu VBA.
    podpowiedź 3.

    Kod: vb
    Zaloguj się, aby zobaczyć kod
    Wszystko w Thisworkbook Przy zdarzeniu Open oczywiście i dla niezbyt zaawansowanych Excelowców. Wystarczy bowiem zaznaczyć cały arkusz, skopiować, wkleić do nowego arkusza i kolumny można sobie dowolnie odkrywać.
    Raczej zastosowałbym ukrywanie (z atrybutem VeryHidden) całych arkuszy i wyświetlał właściwe w zależności od zalogowanego użytkownika.

    0
  • #3 09 Lut 2011 19:21
    Gandalf67
    Poziom 9  

    Dzięki za odpowiedź. Nie jestem jednak aż tak zaawansowany i nie wszystko jest dla mnie tak oczywiste. Szczególnie zainteresowała mnie podpowiedź nr3. Rozumiem że makro które podałeś jest w stanie surowym i trzeba je przerobić? Mógłbyś zatem podpowiedzieć jak powinno dokładnie wyglądać makro zezwalające userom Jan-Kowalski i Jan-Nowak odkrywanie kolumn, np. GHI a całej reszcie - nie?

    Z góry dzięki za cierpliwość :D

    0
  • Pomocny post
    #4 09 Lut 2011 20:06
    adamas_nt
    Moderator Programowanie

    W takim razie przy zamknięciu chowamy

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0
  • #5 10 Lut 2011 08:09
    Gandalf67
    Poziom 9  

    Super. Kliknąłem podziękowanie :D. Dzisiaj w pracy przetestuję (nocna zmiana). Czy te makro dodajemy jakoś specjalnie do skoroszytu czy też normalnie na zasadzie makro/wstaw nowe?

    0
  • #6 10 Lut 2011 20:52
    adamas_nt
    Moderator Programowanie

    Kliknij 2 razy w to tutaj Excel - odkrywanie kolumn tylko przez wybranych użytkowników i wklej...

    0
  • #7 14 Lut 2011 08:01
    Gandalf67
    Poziom 9  

    Tak też zrobiłem ale coś wychodzi nie tak. Mam taki komunikat :
    Excel - odkrywanie kolumn tylko przez wybranych użytkowników Excel - odkrywanie kolumn tylko przez wybranych użytkowników

    0
  • #8 14 Lut 2011 15:28
    adamas_nt
    Moderator Programowanie

    Ochrona arkusza wyłączona?

    0
  • #9 15 Lut 2011 08:40
    Gandalf67
    Poziom 9  

    Rzeczywiście - zapomniałem że Twoje makro automatycznie zakłada hasło w arkuszu. Działa fajnie. Niestety jest mały ale ważny problem: pomimo wpisania w Twoje makro loginów szefa i mojego - inni użytkownicy (po wpisaniu hasła) mają dalej możliwość odkrycia schowanych kolumn - a jego "wyciek" to tylko kwestia czasu....

    Czyli mam dwie prośby:

    1. Czy jest szansa na odblokowanie tych kolumn tylko przez osoby upoważnione (login) - może z zastosowaniem makra z Twojego pierwszego postu - oknem dialogowym?

    2. Czy jest możliwe zrobienie tak, aby po kliknięciu na przycisk przypisany do makra UNHIDE (odkrywanie) - wyskakiwało okno z prośbą o hasło?


    Z góry dziękuję za pomoc i pozdrawiam.

    0
  • #10 15 Lut 2011 18:52
    adamas_nt
    Moderator Programowanie

    Na obydwa pytania odpowiedź brzmi: Tak.
    Jak już sam zauważyłeś ochrona ukrytych kolumn w Excelu jest dość, nazwijmy to "naiwna". O wiele skuteczniejsza jest ochrona arkuszy. Dlatego przemyśl sprawę jeszcze raz. Lepiej włożyć trochę więcej pracy niż później "świecić oczami" ;)

    0
  • #11 16 Lut 2011 09:18
    Gandalf67
    Poziom 9  

    Wiem że masz rację. Chroniłem arkusz hasłem ale niestety jak wspomniałem - jest on edytowany przez kilka osób naprzemiennie i chciałbym aby tylko wybrana grupa miała podgląd w trybie rzeczywistym na wyniki pracy pracowników. Pracuję z anglikami i ciężko jest ich namówić do trzymania się zasad. A że mam nad sobą dwóch szefów - muszę znaleźć jakieś wyjście z tej sytuacji. Już jest dobrze 0 dzięki Twojej automatycznej blokadzie hasłem - skończy się zostawianie odblokowanego arkusza - bo tak im wygodniej. Jeszcze oni to pół biedy, gorzej że późnym wieczorem (nocna zmiana) zdają zarządzanie arkuszem młodej dziewczynie, która chętnie dzieli się danymi końcowymi z niektórymi z pracowników... Jak moich dwóch szefów nie poda jej hasła to OK. Fakt - jak wspomniałeś - zabezpieczenia są słabe, ale dla nich są wystarczające :D - są za leniwi żeby zmusić się do szukania podpowiedzi. Czyli w sumie dziękuję za cierpliwość i okazaną pomoc. Dwa pytania które zadałem wcześniej są nadal aktualne :D. Niemniej jednak nie chcę być zbyt namolny i marudny. Sam moderuję jedną ze stron o tematyce GSM więc wiem jak to jest z czasem...

    Pozdrawiam.

    0
  • #12 16 Lut 2011 22:02
    adamas_nt
    Moderator Programowanie

    Blokowanie edycji w zależności od rodzaju zalogowanego użytkownika. Tak to mniej więcej widzę. Nie włączałem ochrony VBA, więc możesz przeanalizować. Nie widzę potrzeby dodatkowego odblokowywania kolumn dla "zwykłych" userów. Wystarczy zamknąć i przy ponownym otwarciu zalogować się z uprawnieniami administratora.

    0
  • #13 18 Lut 2011 08:51
    Gandalf67
    Poziom 9  

    Super. Bardzo fajny pomysł. Jednak na samym początku odkryłem mały błąd: otóż jeżeli w login i password wpiszemy cokolwiek innego niż w arkuszu Admin - wyskakuje run-time error (dodaję screen z edytora). Po anulowaniu mamy dostępny arkusz Start z możliwością edycji niestety.
    Sam jednak pomysł zaciekawił mnie bardzo i jestem teraz na etapie rozgryzania "który wiersz kodu odpowiada za to i tamto" aby móc go wyedytować. Na pierwszy ogień połączyłem swój angielski arkusz z Twoim i powstała ciekawa rzecz: mam teraz siedem swoich arkuszy o podstawowej nazwie Sheet i cztery Twoje o nazwie Arkusz :D. I tu powstaje pytanie: jaka linijka kodu jest odpowiedzialna za to aby w tym zestawieniu użytkownik nie mający rangi administarator widział wszystkie 7 Sheet a nie tylko dwa? Albo inaczej - jak udostępnić wszystko oprócz Admin i Start?
    Excel - odkrywanie kolumn tylko przez wybranych użytkowników

    0
  • #14 19 Lut 2011 08:24
    adamas_nt
    Moderator Programowanie

    Jeśli zamysł Ci odpowiada, należy dopracować to i owo.
    Sugeruję odkryć wszystkie z jednym wyjątkiem, przerabiając pętlę. Np

    Kod: vb
    Zaloguj się, aby zobaczyć kod
    I w następnej kolejności, jeśli loguje się ktoś posiadający uprawnienia, udostępniać arkusze "administracyjne".

    Przetestuj załącznik (wymaga dopracowania oczywiście). Na początek dołożyłem obsługę błędu i kilka zabezpieczeń. Np po trzecim nieudanym logowaniu lub przy "twardym" zamknięciu formularza. Założyłem także hasło VBA (dla zobrazowania). Jest łatwe (masz je przed oczami) ale w razie czego pisz, podpowiem :)

    0
  • #15 20 Lut 2011 11:21
    Gandalf67
    Poziom 9  

    No i jednak nie daję rady z hasłem....:D

    0
  • #17 20 Lut 2011 18:02
    Gandalf67
    Poziom 9  

    Wielke dzięki za aktualizację :D. A ja się nakombinowałam z Gandalf, adamas, VBA, excel , z dużej litery i małej....


    Edycja: Ostatnia wersja którą wstawiłeś gryzie się z innymi otwartymi plikami excel'a. W momencie przełączania się na inny otwarty plik - "Próba" przełącza się samoczynnie do arkusza "Start".

    0
  • #18 21 Lut 2011 22:32
    adamas_nt
    Moderator Programowanie

    Dopracuj sobie. Ale gdyby to ode mnie zależało, w takim przypadku zamknąłbym plik (makrem) na amen. Z innego skoroszytu można uruchomić kod, który poodkrywa wszystko to, co tak skwapliwie chowamy :)

    0
  • #19 01 Mar 2011 08:25
    Gandalf67
    Poziom 9  

    Witam ponownie. Jak to zwykle bywa, plany sobie a życie sobie. Narobiłem się jak dziki osioł a pod koniec, gdy doszło do haseł, dowiedziałem się że oprócz naszej (nocnej zmiany) ten skoroszyt jest edytowany jeszcze przez rzeszę ludzi z dniówki. A w związku z tym zakładanie haseł na poszczególne osoby mija się z celem. Jako że dla nas najważniejsze jest ukrycie wspomnianych wcześniej kolumn, postanowiłem uprościć sprawę ich ochrony maksymalnie (dla nich wystarczy :D). Oto na czym stoję teraz:

    1. Zrobiłem w arkuszu przycisk i nagrałem do niego makro ukrywające kolumny
    2. Samo makro zabezpieczyłem wymogiem wpisania hasła w wyskakującym oknie:

    Kod: vb
    Zaloguj się, aby zobaczyć kod
    ... skromniutko ale działa.

    3. Pomocy szukam w tym, aby podobnie jak to miało miejsce w podanym wcześniej Twoim kodzie - kolumny chowały się automatycznie podczas zamykania arkusza.

    czyli w skrócie:
    1. klikam przycisk aby odkryć/wpisuję hasło w wyskakującym okienku i odkrywam kolumny
    2. Zamykam arkusz/kolumny się same chowają

    Taki byłby ideał dla moich leniwych angoli :D

    0
  • #20 01 Mar 2011 18:42
    adamas_nt
    Moderator Programowanie

    Wyrzuć co niepotrzebne w procedurach Thisworbook. Powinno zostać tylko chowanie kolumn.

    Kod: vb
    Zaloguj się, aby zobaczyć kod
    Wykorzystaj swoje makro. Żeby ukrywanie było skuteczne, musisz wymusić zapisanie pliku. Dlatego może okazać się niezbędne automatyczne wykonanie kopii zapasowej przy otwarciu (zapisz jako, otwórz oryginał, zamknij kopię).

    0