2016-08-01 2 views
0

여러 시트가있는 Excel 통합 문서가 있습니다. 사용자가 통합 문서 내의 시트를 열지 못하도록 암호를 보호 할 수있는 방법이 있습니까? 시트에는 큰 그래프가있어서 모든 사람이보고 싶지는 않지만 편집 할 수는 없습니다. 당신의 도움이통합 문서 내의 개봉지에서 시트 보호

편집

에 미리

덕분에 나는 사용자가 문제의 시트에 액세스 할 formcontrol 버튼을 클릭 할 수 있도록 다음과 같은 코드를 사용했다.

Sub ShowHeatMap() 
Dim S As String 
S = InputBox("Enter Password") 
If S = vbNullString Then 
    Exit Sub 
ElseIf S <> "wiretransfer" Then 
    Exit Sub 
Else 
    Worksheets("Training Heat Map").Visible = xlSheetVisible 
End If 
End Sub 

이것은 통합 문서에 추가 한 일종의 "homepage"시트에있는 내 단추와 관련이 있습니다.

그러나 통합 문서를 다시 열면 시트가 숨겨진 상태로 유지되지 않습니다. 이 코드를 시도 :

Private Sub Workbook_BeforeClose(Cancel As Boolean) 
ThisWorkbook.Worksheets("Training Heat Map").Visible = xlSheetVeryHidden 
End Sub 

아이디어가 있으십니까? 이 코드는 일반적인 선언하에 시트에 대한 모듈에 입력됩니다.

+0

어떤 사람들은 워크 시트를보고 어떤 사람들은 그것을 보지 못하도록하거나, 아무도 그것을 보지 못하도록하고 싶습니까? 아무에게도 보이지 않게하려면 시트를 숨기려면 시트 ("SheetName")라고하는 VBA 코드를 추가하면됩니다. Visible = xlVeryHidden – Clusks

+0

@clusks 아니요. 그것을 볼 수 있어야합니다 :/ – SRag

+0

OT : Excel은 보안을위한 실행 가능한 소프트웨어가 아니기 때문에 사용자가 적절한 로그인없이 해당 데이터를 볼 수 없으면 해당 목적을 위해 소프트웨어 솔루션을 만들어야합니다. xls 또는 그와 유사한 항목에 대한 내보내기 옵션. 엑셀 시트/VBA 코드 보호는 수초 내에 깨질 수 있습니다. – Sgdva

답변

0

통해 this answer, 나는 이것이 당신을 위해 트릭을 할 것 같아요. VBA 내에서 ThisWorkbook 이내에 넣어 :

Private Sub Workbook_SheetActivate(ByVal Sh As Object) 
Dim MySheets As String, Response As String 
MySheet = "Sheet1" 
If ActiveSheet.Name = MySheet Then 
ActiveSheet.Visible = False 
    Response = InputBox("Enter password to view sheet") 
     If Response = "MyPass" Then 
      Sheets(MySheet).Visible = True 
      Application.EnableEvents = False 
      Sheets(MySheet).Select 
      Application.EnableEvents = True 
     End If 
End If 
Sheets(MySheet).Visible = True 
End Sub 

을 분명히 여러분의 필요에 맞게 약간 필요합니다. 또한 VBA 코드를 암호로 보호해야합니다. 그렇지 않으면 누구나 암호를 볼 수 있고 암호를 찾을 수 있습니다.

+0

나를 위해 작동하지 않습니다. Btw :'ActiveSheet' 대신'Sh'를 사용할 수 있습니다. –

+0

필자는 지금까지 명확하게 말하지 않았다. 문제는 시트가 활성화 된 후에'Workbook_SheetActivate' 이벤트가 발생한다는 것이다. 그러면 모든 데이터를 볼 수 있고 암호를 묻는 메시지가 나타납니다. 또한 : 변수 선언 행을 삭제 한 후 코드가 실행되었습니다 (실행 됨). 나는 그것이 왜 있는지 전혀 모른다. –

+0

안녕하세요, @clusks이 코드를 시도했지만 나에게 도움이되지 못했지만 제공 한 링크를 기반으로 한 다른 솔루션을 시도하고 있습니다. 시트를보기 위해 입력 상자 (암호를 입력하는 곳)를 프롬프트하는 formcontrol 버튼이있는 메인 시트가 있습니다. 그러나 나는 문서를 열 때마다 시트를 'xlveryhidden'상태로 유지할 수있는 코드를 얻을 수 없습니다. 원래 질문의 편집 내용을 참조하고 내가 뭘 잘못했는지 알려 주실 수 있습니까? – SRag

관련 문제