Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [VBA]Skrypt logowania, Blokowanie i odblokowanie arkusza
adgad
post
Post #1





Grupa: Zarejestrowani
Postów: 74
Pomógł: 0
Dołączył: 14.04.2010

Ostrzeżenie: (0%)
-----


Witam,
mam problem z visual basic w excel. Mianowicie chce zrobić tak:
1.Otwieram plik excel
2. Możliwość zmian w polach jest zablokowana
3. Klikam przycisk odblokuj
4. Wyświetla się formularz z hasłem
5. Wpisuje haslo
6. Jeśli poprawne to arkusz jest odblokowany, jeśli nie to odpowiedni komunikat
Poniżej przedstawiam kod:
Kod
Sub Przycisk1_Kliknięcie()
'w momencie klikniecia przycisku sprawdzamy haslo
  If Not Podaj_haslo Then
     'hasło niepoprawne!
  Else
     'Hasło OK!
     MsgBox "Hasło poprawne"
  End If
End Sub

Private Function Podaj_haslo() As Boolean
Dim arkusz As Worksheet
'zapis hasła do zmiennej
  Const hs = "admin"
  'wywolanie formularza
  Haslo.Show
  If Haslo.hs_user = hs Then
  Podaj_haslo = True
  Else
     MsgBox "Podane hasło jest nieprawidłowe !"
  End If
  
End Function


A tu kod z formularza:
Kod
Private Sub ANULUJ_Click()
'Nacisnieto Anuluj, a wiec fiasko...
'ukrywamy formularz
Me.Hide

End Sub

Private Sub OK_Click()
'nacisnięto klawisz OK
If hs_user = "" Then
   'sprawdzamy czy pola haslo i uzytownik sa wypełnione
   MsgBox ("Podane hasło jest niepoprawne")
   'jezeli nie, to kontynuujemy
   Exit Sub
End If

'wszystko OK, to konczymy sukcesem
result = True
'ukrywamy formularz
Me.Hide

End Sub


Krótko mówiąc nie mogę sobie poradzić z zablokowaniem arkusza i jego odblokowaniem, punkt 2 i 5. Hasło powinno być z góry ustalone, ma to tylko na celu ochronę przed zwykłym użytkownikiem przed zmianami danych, które do niego nie należą (IMG:style_emoticons/default/smile.gif)
Jeśli ktoś będzie mógł pomóć - będę bardzo wdzięczny (IMG:style_emoticons/default/smile.gif)

Ten post edytował adgad 18.09.2012, 19:56:01
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
Pilsener
post
Post #2





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


1. Przecież możesz zablokować arkusz na hasło i nie potrzebujesz do tego VBA (chyba, że w tym nowym office coś się pozmieniało)
2. Jak nie wiesz jakiej użyć metody na obiekcie worksheet to użyj rejestratora makr a potem podejrzyj zapisany kod (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
adgad
post
Post #3





Grupa: Zarejestrowani
Postów: 74
Pomógł: 0
Dołączył: 14.04.2010

Ostrzeżenie: (0%)
-----


wiem o tej możliwości ale czytałem że później zdjęcie tego hasła wymaga użycia dodatkowych narzędzi. A opcja chron arkusz wymaga zdjęcia blokady gdy będę chciał coś zmodyfikować, co jest trochę uciążliwe nie tyle dla mnie co dla pozostałych korzystających z tego pliku. a chodzi jedynie o zablokowanie modyfikacji danych- ich podgląd powinien być możliwy. niestety excel nie oferuje tego co chce :-)
Jutro będę patrzył co to ten rejestrator makr.
Jeśli natomiast ktoś mógłby podać kod na blokowanie arkusza- z odblokowaniem wowczas powinienem sobie poradzić to będę wdzięczny. reszta dziala. jeśli wcześniej coś wymysle to napisze :-) z góry dziękuje.
Hmm..
Użyłem rejestratora makr, zablokowałem arkusz i wpakowałem to do funkcji, która powinna się uruchamiać po otwarciu skoroszytu:
Kod
Private Sub Workbook_Open()
Sheets("Arkusz1").Select
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub

Jednak nadal nie działa... tzn. arkusz nie jest zablokowany, więc coś źle robię. Czy ktoś programuje w VBA i może pomóc?
Edit
Teraz mi działa tak że arkusz jest blokowany jedynie wtedy gdy wywołam formularz a wpisze złe hasło ;/ Rozwiązanie więc jest coraz bliżej. Ponawiam prośbę o pomoc.

Ten post edytował adgad 19.09.2012, 17:14:47
Go to the top of the page
+Quote Post
Pilsener
post
Post #4





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Cytat
1.Otwieram plik excel
2. Możliwość zmian w polach jest zablokowana


Musisz zatem zacząć od tego, by niezależnie od poczynań użytkownika arkusz był zawsze zablokowany dla zmian, sugeruję zatem skorzystać ze zdarzeń:
Kod
Workbook_Open
Workbook_BeforeClose


Zresztą gdzieś tam w tym kombajnie powinien być podgląd zdarzeń (IMG:style_emoticons/default/wink.gif) Poczytaj trochę o środowisku pracy bo to programistyczna Walhalla, daje duże możliwości w porównaniu do zwykłego kolorowania kodu.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 14:50