2016-05-03 11 views
0

ブックを作成して保護したい。ブックのパスワードを設定して確認する

これは私が保護のためにやったことです:

Sub unprotected() 
    Dim f As Worksheet 

    For Each f In ActiveWorkbook.Worksheets 
     f.Unprotect 
    Next f 
End Sub 

が、私は最初にパスワードを確認したい:今すぐ

Sub Protege() 
    Dim f As Worksheet 
    Dim mdp As String 

    mdp = InputBox("mdp est ?") 

    For Each f In ActiveWorkbook.Worksheets 
     f.Protect mdp, True, True, True 
    Next f 
End Sub 

、これは私がこのワークブックの保護を解除するために何をしたかです。私はパスワードを入力し、それが真のパスワードと一致するかどうかを確認します。

+0

パスワードはどこにも格納されず、ハッシュのみが格納されます。そして、あなたは簡単に衝突するハッシュを生成し、ワークシートの保護を解除するネストループを簡単に書くことができます。どこにでも平文パスワードを格納することはありません。何を正確に達成しようとしていますか? –

答えて

0

私が正しく理解していれば、あなたは単にそれを試してみると、そうしながら、すべての可能なエラーをキャッチして、パスワードを確認することができます。

Public Sub ProectSheet() 

For Each ws In ThisWorkbook.Worksheets 
    ws.Protect "pw" 
Next ws 

End Sub 

Public Sub UnprotectSheets() 

strPW = InputBox("PW?") 
For Each ws In ThisWorkbook.Worksheets 
    On Error GoTo WrongPassword 
    ws.Unprotect strPW 
Next ws 
MsgBox "All sheets are now unprotected." 

Exit Sub 

WrongPassword: 
    MsgBox "The password you entered is incorrect." 
    Exit Sub 

End Sub 
1

保護を解除しようとしている以外のシートのパスワードをテストする方法はありませんそのパスワードを持つシート。

For Each f In ActiveWorkbook.Worksheets 
    On Error Resume Next 
     f.Unprotect mdp 
     lngError = Err 
    On Error GoTo 0 
    If lngError <> 0 Then MsgBox "Mauvais mdp !" 
Next f 

をあなただけ提供されたパスワードが正しかったかどうかをテストしたいが、まだシートをしたい場合:mdpが無効なパスワードが含まれている場合、あなたはおそらくキャッチする必要があり、実行時エラーが発生しますが、

ただ、f.Unprotect mdpを行います保護されたあなただけ後で再びそれを保護することができます。

For Each f In ActiveWorkbook.Worksheets 
    On Error Resume Next 
     f.Unprotect mdp 
     lngError = Err 
    On Error GoTo 0 
    If lngError = 0 Then 
     f.Protect mdp, True, True, True 
    Else 
     MsgBox "Mauvais mdp !" 
    End If 
Next f 

は、そのかかわらず、心に留めておいてください - あなただけのものを作成する必要があるため、一致パスワードの無限大があり、 - マットのマグカップは、コメントで述べたように元のハッシュと同じハッシュを持つそれはかなり簡単です。

パスワードを知らない人にはシート保護機能はないと考えてはいけません。それは簡単に回避することができます。

関連する問題