poniedziałek, 28 kwietnia 2008

Ukrywanie zabezpieczanie arkuszy

Czasami jesteśmy przekonani, że w Excelu ktoś ukrył jakąś kartę a na niej jakieś ciekawe informacje. Aby się do nich dobrać należy włączyć edytor VBA - alt + F11. Tworząc nowy moduł piszemy w nim procedurę wypiszArkusze na wzór:
Sub wypiszArkusze()
  Dim arkusz()
  Dim widoczny()
 
  ile = ActiveWorkbook.Sheets.Count
  ReDim arkusz(1 To ile)
  ReDim widoczny(1 To ile)
  
  For i = 1 To ile
    arkusz(i) = ActiveWorkbook.Sheets(i).Name
    widoczny(i) = ActiveWorkbook.Sheets(i).Visible
    Range("B1").Offset(i, 0).Value = arkusz(i)
    Range("B1").Offset(i, 1).Value = widoczny(i)
    
    If False = widoczny(i) Then
      ActiveWorkbook.Sheets(i).Visible = True
    End If
  Next i
End Sub
W ten sposób otrzymamy kompletną listę zakładek i przy okazji wszystkie uaktywnimy.  

słowa kluczowe: arkusz, ukrywanie arkusza arkuszy, ukryta zakładka w Excel,


Co do zabezpieczeń arkusza można w VBA użyć:
ActiveWorkbook.ProtectionStructure = True
' lub
ActiveWorkbook.ProtectionStructure = False
słowa kluczowe: zabezpieczenie arkusza arkuszy blokada Blokada kombinacji klawiszy CTRL + BREAK
Application.EnableCancelKey = xlDisabled
' nie zapomnijmy potem:
Application.EnableCancelKey = xlEnabled
 
Temat ten rozwiną się praktycznie w poście >>

2 komentarze:

  1. Bardzo ładne. Przepraszam za głupie pytanie, ale nie znam VBA.. Jest jakaś metoda żeby wydrukować nazwy wszystkich arkuszy do pliku albo do określonego arkusza?
    Pozdrawiam - marcin

    OdpowiedzUsuń
  2. Nic prostrzego.
    Można przerobić skrypt, który wpisałem wyżej.

    W efekcie wykonanie czegoś takiego da Ci nazwy wszystkich arkuszy bieżącego skoroszytu

    Sub namesOfAllExcelSheets()
    For i = 1 To ActiveWorkbook.Sheets.Count
    Range("A1").Offset(i - 1, 0).Value = ActiveWorkbook.Sheets(i).Name
    Next i
    End Sub

    OdpowiedzUsuń