- ベストアンサー
Excelシートの保護にパスワードが設定されているか
- Excelシートの保護にパスワードが設定されているかを判断する方法について教えてください。
- Office2003ではパスワードの解除方法が異なりましたが、Office2007では異なるパスワードで保護を解除しようとすると確認のメッセージボックスが表示されます。
- Bookのパスワード判断の方法についても教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
やっと知人のExcel2007を使わせてもらえたので試しました。 パスワードbbbで保護したシートに以下のマクロを走らせて見ました。 Sub test02() On Error GoTo line ActiveSheet.Unprotect Password:="aaa" flg = True line: If Not flg Then MsgBox "パスワードがちがいますね" End If End Sub で、パスワード確認のメッセージBOXも出ずに、 "パスワードがちがいますね" が出ましたよ。
その他の回答 (2)
- cistronezk
- ベストアンサー率38% (120/309)
回答者のみなさんがサンプルを示しているのに、質問者が肝心のコードを表示しないのはおかしいですね。 >1.パスワードを空白で解除する の部分だけのコードのみを実行してもその現象は再現するのでしょうか? それと一応、OSの情報も提供すべきかと。
- merlionXX
- ベストアンサー率48% (1930/4007)
質問者さんは何をなさりたいのでしょうか? 「特定のパスワード」で保護されていることを確認されたいなら、2007が手元にないので試せず回答できないのですが、もし「保護されていること」を確認されたいなら シートなら ActiveSheet.ProtectContents BOOKなら ActiveWorkbook.ProtectStructure で、それぞれ保護されていればTRUEが返ります。
補足
説明足らずですみません。 該当のシートが保護されており、 かつパスワードが例えば「aaa」のもののみ 処理を実施したいのです。 下記のものは、エラーとして処理したいのです。 (1)保護されているが、パスワードが設定されていない。 (2)保護されているが、パスワードが「aaa」でない。 (3)保護されてない。 教えていただいた、ProtectContentsでは (3)ははじけますが、(1)(2)が検出できません。 Office2003では、先に書いたように ON ERROR RESUME NEXTにより ERRORを検地して判断していますが Office2007では、パスワードの入力を促すI NPUTBOXが表示されてしまいます。
補足
わざわざ、検証ありがとうございます。 1.パスワード設定違い の例だと確かにそれで良いですが 2.パスワード空白 を想定して 下記のように、左記にパスワードが空白じゃなかどうかという ロジックを入れました。 このロジックだと2.ではうまくいくのですが1.では パスワードを求められました。 ActiveSheet.Unprotect Password:="" が ダメなように思いますので、 ActiveSheet.Unprotect Password:="ダミーパスワード"で 保護を解除して、解除できれば、パスワードが設定されていない という判断にしようかと考えています。 いろいろお手数をおかけして、ありがとうございました。 Sub ChkPass2() '先にパスワードが空白じゃないかを確認して '処理を行う On Error Resume Next ActiveSheet.Unprotect Password:="" If Err = 0 Then MsgBox ("パスワードが設定されていません") End If On Error GoTo Err_Rtn '正しいパスワードかどうか? ActiveSheet.Unprotect Password:="aa" End Err_Rtn: MsgBox ("ERROR") End Sub