2016-12-18 19 views
0

vbaで複数のExcelシートのパスワードを設定する必要があります。私は、異なる会社のセクションのシートを持つ優れた文書を持っています。私はそれが欲しいと私は、開始ページだけが表示されている文書をExcelで開き、それが正しい場合は、そのセクションの2つのシートを開くためにパスワードを入力します。アイデアは: Open Excelドキュメントを開くと、開始ページが表示されます。 6つのセクションの1つにパスワードを入力してください セクション1またはセクション2 ...またはセクション4のパスワードが正しい場合は、パスワードを入力したセクションに属する2つのシートを表示してください。 セクション5またはセクション6のパスワードが正しい場合は、すべてのシートを表示します。私は他のシートをクリックし、それがパスワード(vbaで複数のシートのパスワードを設定する方法は?

     `If Application.ActiveSheet.Name = xSheetName Then 
           Application.EnableEvents = False 
           Application.ActiveSheet.Visible = False` 

Iのbecouse尋ねるシート1に戻ってクリックしたときに、これと

Private Sub Workbook_SheetActivate(ByVal Sh As Object) 

    Dim xSheetName As String 
    xSheetName = "Sheet1" 
    If Application.ActiveSheet.Name = xSheetName Then 
     Application.EnableEvents = False 
     Application.ActiveSheet.Visible = False 
     xTitleId = "KutoolsforExcel" 
     response = Application.InputBox("Password", xTitleId, "", Type:=2) 
     If response = "123456" Then 
      Application.Sheets(xSheetName).Visible = True 
      Application.Sheets(xSheetName).Select 
     End If 
End If 
Application.Sheets(xSheetName).Visible = True 
Application.EnableEvents = True 
End Sub 

問題:私はこのコードの一枚をロックするために最初に試してみました仮定し、私はそれを避けるために方法がわからない その後、私はこのような複数のシートをロックしようとしたとき:。

Dim xSheetName1 as String 
Dim xSheetName3 as String 
xSheetName1 = "Sheet1" 
xSheetName3 = "Sheet3" 
If Application.ActiveSheet.Name = xSheetName1 Then 
Application.EnableEvents = False 
Application.ActiveSheet.Visible = False 
xTitleId = "KutoolsforExcel" 
response = Application.InputBox("Password", xTitleId, "", Type:=2) 
If response = "123" Then 
    Application.Sheets(xSheetName1).Visible = True 
    Application.Sheets(2).Visible = True 
    Application.Sheets(xSheetName1).Select 

If Application.Sheets(1).Visible = True Then 

Application.EnableEvents = False 
Aplication.Sheets(xSheetName1).Visible = False 
Exit Sub 
End If 
End If 

End If 
    If Application.ActiveSheet.Name = xSheetName3 Then 
     Application.EnableEvents = False 
     Application.ActiveSheet.Visible = False 
     xTitleId = "KutoolsforExcel" 
    response = Application.InputBox("Password", xTitleId, "", Type:=2) 
    If response = "111" Then 
     Application.Sheets(xSheetName3).Visible = True 
     Application.Sheets(5).Visible = True 
     Application.Sheets(5).Select 

If Application.Sheets(1).Visible = True Then ' tried to get rid of asking       

               for password every time 


    Application.EnableEvents = False 
' Aplication.Sheets(xSheetName1).Visible = False 
    Exit Sub 
End If 
End If 
    End If 
    Application.Sheets(xSheetName1).Visible = True 
    Application.Sheets(xSheetName3).Visible = True 
    Application.EnableEvents = True 

End Sub 

その後、私はすべてロックされshee任意の正しいパスワードを入力したときtsはロック解除されます。 時々私はシート(インデックス)を使用しました。なぜなら、いくつかのシート名でエラー9が問題になるからです:)))

+1

[スタート]ページのボタンを使ってパスワードの要求を開始してみませんか? Sheet_Activateイベントを使用することは適切なアプローチのようではありません。 –

+2

(パスワードの最終目標はわかりませんが、Excelのパスワードは簡単にバイパスできます(https://www.google.com/search?q=bypass) + Excel +パスワード)を入力してください。あなたのユーザーが新しく/ Excelに精通していない場合はおそらくうまくいくでしょうが、もし誰かがそこに入ることを望むなら、おそらくそれは可能です。)また、パスワードを技術的に追加するのではなく、ユーザーが入力した文字列に基づいてシートを表示するだけです。 – BruceWayne

答えて

0

私はバットマンに同意しますが、これはあまり安全な方法ではありません。このファイルをマスターファイルとして使用し、シートを複数のファイルに分割するためのマクロをパスワードで実行するのが最適です。

このようにして1つのファイルでコンテンツを編集し、1つのファイル内でセキュリティを管理することができます。

関連する問題