2014-11-09 1 views
0

내 목표는 시트를 암호로 보호하는 것입니다."탭 선택 기능"을 숨길 수 있습니까?

사용자가 통합 문서를 열면 하나만 제외하고 모든 시트가 숨겨집니다 (매우 숨김). 사용자가 암호를 입력하면 모든 시트가 표시됩니다. VBA 코드를 사용하여 시트를 숨기고 표시하는 방법은 무엇입니까? 탭 선택 기능을 숨길 수 있습니까?

답변

1

하기 전에, 내가 Excel 파일이 안전하지 않은 방법을 지적하자 얻는 방법을

  1. 귀하의 코드는 파일의 XML의 일부가 될 것입니다, 그래서 기본 데이터를 검사, 원하는 사람은 찾을 수에 암호.

이제 통합 문서 열기 이벤트에 포함해야하는 코드에 대해 경고했습니다. 모든 것을 숨기고 (책을 닫을 때 시트가 표시되는 시나리오를 방지하기 위해) 암호를 묻습니다.

Public Sub UnlockSheets() 
    ' 1 - hide every sheet, except the desired one 
    Dim aWorksheet As Worksheet 
    For Each aWorksheet In ActiveWorkbook.Worksheets 
     If aWorksheet.Name <> "desired sheet name" Then 
      aWorksheet.Visible = xlVeryHidden 
    Next 

    ' 2 - ask for the password 
    Dim userPassword As String 
    userPassword = InputBox("Please enter your password") 
    If userPassword = "my_password" Then 
     RevealSheets 
    Else 
     MsgBox "Wrong password!", vbCritical 
     Application.DisplayAlerts = False 
     ActiveWorkbook.Close False 
    End If 
End Sub 

Public Sub RevealSheets() 
    '3 - Hide all the sheets 
    Dim aWorksheet As Worksheet 
    For Each aWorksheet In ActiveWorkbook.Worksheets 
     aWorksheet.Visible = xlSheetVisible 
    Next 
End Sub 

또 다른 문제는 사용자가 Shift 키를 누른 상태에서 모든 매크로를 중지 할 수 있다는 것입니다. 말할 필요도없이 ... 너무 안전하지 않습니다. 그렇다면 Excel 파일은 믿을 수없는 안전성으로 알려져 있지 않습니다.

관련 문제