- ベストアンサー
エクセルVBAで
全シート保護(保護の解除)のコードなんですが、パスワードを求めない形にするには下記をどうすれば良いのですか? Sub 全シート保護の設定() Dim Sh As Worksheet x = Application.InputBox("パスワードを入力して下さい", Type:=3) For Each Sh In Worksheets Sh.Protect (x) Next Sh End Sub Sub 全シート保護の解除() Dim Sh As Worksheet On Error GoTo ErLine Do x = Application.InputBox("パスワードを入力して下さい", Type:=3) Loop While x = "False" For Each Sh In Worksheets Sh.Unprotect Password:=x Next Sh Exit Sub ErLine: y% = MsgBox("パスワードが違います ! 終了します", 48) End Sub 毎度すみませんがよろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
またまたこんにちは。 >質問文のコードが今あるものなのですが、ようは単純に全シート保護(解除)の際に、パスワードを聞いてこないようにしたいのです。 それはは十二分に分っていますが、VBAの場合はコードのちょっとした部分でも違うと全く違う動作をしてしまいますので、修正したコードをアップしてくださいと言っているのですが・・・。 それと、const x="LINERS" にセットするパスワードは 大文字小文字などちゃんと区別してセットしてますか? それもアップしたコードで確認したいのです。 尚、言わずもがなのことですが、当方がアップしたコードは完全に動作するものです・・・よ。(^^;;; 以上です。
その他の回答 (4)
- taocat
- ベストアンサー率61% (191/310)
再びこんにちは。NO.3です。 >いただいたコードに変えて実行してみましたら、 「実行時エラー'1004' 入力したパスワードは間違っています それはメッセージどおりパスワードが間違っています。 解除・設定両方のパスワード用変数宣言の Const X = "LINERS" の LINERS を 本物のパスワードに変えて実行してますか? 本物のパスワードと エラーのでるコードをアップしてみて下さい。 いまちょっと暇なので出来るまでお付き合いしませう。(^^;;; 以上です。
補足
お付き合いいただきすみません。 質問文のコードが今あるものなのですが、ようは単純に全シート保護(解除)の際に、パスワードを聞いてこないようにしたいのです。 超初心者なのでたまにわけのわからないことを言うと思いますがよろしくお願いします。
- taocat
- ベストアンサー率61% (191/310)
こんにちは。 パスワードが、"LINERS" だとして一案。 '---------------------------------------------- Sub 全シート保護の設定() Dim Sh As Worksheet Const X = "LINERS" For Each Sh In Worksheets Sh.Protect Password:=X Next Sh End Sub '--------------------------------------------- Sub 全シート保護の解除() Dim Sh As Worksheet Const X = "LINERS" For Each Sh In Worksheets Sh.Unprotect Password:=X Next Sh End Sub '---------------------------------------------- 以上です。
補足
ご回答有難うございます。 いただいたコードに変えて実行してみましたら、 「実行時エラー'1004' 入力したパスワードは間違っています~でデバックを求められてしまいます。
- kaeru_007
- ベストアンサー率22% (8/36)
こんにちわ。 修正前:x = Application.InputBox("パスワードを入力して下さい", Type:=3) 修正後:x = "password" で、どうでしょうか。
お礼
ご回答感謝します。 全シート保護の解除を行い、マクロAを実行し、全シート保護を再び行うようになっています。修正してみましたが、エラーが出ました。保護の解除のほうはどう直せばよいのでしょうか? 有難うございました。
- putty
- ベストアンサー率0% (0/1)
InputBoxでパスワードの入力を行わなければいいと思うんですが。。。その値をXに代入しているのでそのあたりもいらないと思います。
お礼
ご回答感謝します。 すみませんVBA超初心者なんです。このコードは自分が作ったわけではなく、わからないままに使用しているのですが、どこで何を宣言しているのかさえわかりません。不必要な部分を削って使えるものなのでしょうか? ありがとうございました。
お礼
大変失礼しました。 問題なしです。先ほどの補足は私がおかしなことをしていたためです。 最初のコード(訂正なし)の段階でパスワードは設定していなかったのです。 なのにいただいたコードのほうに素直に"LINERS"と書いてました。すみません。 >尚、言わずもがなのことですが、当方がアップしたコードは完全に動作するものです・・・よ。(^^;;; 完全に動作してます。失礼致しました。
補足
VBAって難しいです。有難うございました。