シートの保護解除を、変数で試したい
はじめて質問します。よろしくお願いします。
常用のパスワードを配列に準備しておき、
ActiveSheet.Unprotect Password:=mystrを実行して、保護解除ができない場合に、
パスワードを変更するようにエラー処理をして、適合するパスワードを探すようにしました。
結果、excel20101では、予定の動きをするのですが、
excel2007では、(1)を実行後、パスワードを求めるダイアログがでて、(2)以降を実行してしまいます。
Public Sub test()
tt = False
ps = Array("test", "rrr", "1234", "123", "qqq")
p = 0
mystr = ""
Application.DisplayAlerts = False
Worksheets(1).Activate
On Error GoTo e1
ActiveSheet.Unprotect Password:=mystr '・・・・(1)
On Error GoTo 0
Application.DisplayAlerts = True '・・・・(2)
MsgBox mystr
tt = True
Exit Sub
e1: '・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・(3)
If p < UBound(ps) Then
mystr = ps(p)
p = p + 1
Resume
Else
mystr = InputBox("??", "EE", "")
If mystr = "" Then
Exit Sub
Else
Resume
End If
End If
End Sub
この Application.DisplayAlerts = False や On Error GoTo によるエラー処理は、
1 2010では機能するのに、2007では機能していないのでは?
*どこかに、設定する場所があるのでしょうか。
2 2007でも、シート保護の解除以外の時では、この記述で機能するのですが・・・・
<やりたいこと>
複数のユーザー作成のBookは、それぞれのパスワードが決まっている。ユーザーごとのパスワードをマクロで解除したいのですが、うまくいきません。
だらだらと、長い文章で分かりにくい質問ですが、どなたか、ご教授をお願いします。
補足
なぜそのような事になるのか。正しいパスワードから合鍵を割り出す方法は? もしご存知なら教えて頂けませんでしょうか。ヒントの書かれたURLだけでも結構です。