Excel VBA 質問スレッド №2037 (解決済)
シート保護パスワードの解除し再設定
投稿者 : ぱす 投稿日時 : 2024/10/24(Thu) 23:46:51 OS : 未指定 EXCEL : 未指定
パスワード保護されたシートでマクロが実行できるように下記コードを作成しました。
excel起動した初回は正常に実行されますが、2回目から「実行時エラー '1004':入力したパスワードは間違っています。CapsLockキーがオフになっていることを確認し、大文字と小文字が正しく使われていることを確認してください。」と表示され、「ws.Unprotect password:=password」の部分が黄色くマーキングされます。
原因教えていただけないでしょうか?
よろしくお願いします。
パスワード保護されたシートでマクロが実行できるように下記コードを作成しました。
excel起動した初回は正常に実行されますが、2回目から「実行時エラー '1004':入力したパスワードは間違っています。CapsLockキーがオフになっていることを確認し、大文字と小文字が正しく使われていることを確認してください。」と表示され、「ws.Unprotect password:=password」の部分が黄色くマーキングされます。
原因教えていただけないでしょうか?
よろしくお願いします。
Sub macro() Dim count As Long Dim cell As Range Dim targetRange As Range Dim rowNum As Long Dim ws As Worksheet Dim maxCell As Range Dim maxValue As Long Dim password As String ' シートを設定 Set ws = ThisWorkbook.Sheets("シートA") ' シートのパスワード password = "1234567" ' シートの保護を解除 ws.Unprotect password:=password ' 各行に対してループ For rowNum = 30 To 500 Set targetRange = ws.Range("B" & rowNum & ":Z" & rowNum) count = 0 On Error Resume Next For Each cell In targetRange If cell.Font.Color = RGB(255, 0, 0) Then count = count + 1 End If Next cell On Error GoTo 0 ws.Range("A" & rowNum).Value = count Next rowNum ' シートの保護を再度設定 ws.Protect password:=password End Sub
スポンサーリンク
[返信 1] Re : シート保護パスワードの解除し再設定
投稿者 : てらてら 投稿日時 : 2024/10/25(Fri) 05:28:24
こんにちは。
提示されたコードを実行してもエラーは出ませんでした。
ただ、最後の、
ws.Protect password:=password
の直前に、password を変更した場合、2回目はエラーとなります。
(2回目にパスワードを変更しているので当然ですが,,,)
Debug.Print password
' シートの保護を再度設定
ws.Protect password:=password
などとして直前の値を確認してみてはいかがでしょう。
こんにちは。
提示されたコードを実行してもエラーは出ませんでした。
ただ、最後の、
ws.Protect password:=password
の直前に、password を変更した場合、2回目はエラーとなります。
(2回目にパスワードを変更しているので当然ですが,,,)
Debug.Print password
' シートの保護を再度設定
ws.Protect password:=password
などとして直前の値を確認してみてはいかがでしょう。
[返信 2] Re : シート保護パスワードの解除し再設定
投稿者 : ピロリ 投稿日時 : 2024/10/26(Sat) 10:37:30
私の環境でも、このコードでのエラー発生は有りませんでした。
まず、このコードに On Error Resume Next ・ On Error GoTo 0 は必要ないですよね。 削除してはいかがでしょうか。
本題ですが、今回のエラーは「"1234567"のパスワードでは解除できない」ってことなので、別パスワードが設定されてるはず。
このプロシージャ以外にもパスワードを設定する処理が有るのなら、そちらを疑った方が良いかも知れません。
( 設定するパスワードを間違えたとか、別パスワードを設定すべきシートを取り違えたとか・・・ )
全コードを「password:=」で検索し、「シートA」へどのようなパスワードが設定し得るのか調べてみてはいかがでしょう。
「シートA」へ設定し得るパスワードが複数存在し、エラー後の「シートA」がいずれかのパスワードで解除できるなら、ある程度
悪さをしてる処理が絞り込めるのでは・・・
私の環境でも、このコードでのエラー発生は有りませんでした。
まず、このコードに On Error Resume Next ・ On Error GoTo 0 は必要ないですよね。 削除してはいかがでしょうか。
本題ですが、今回のエラーは「"1234567"のパスワードでは解除できない」ってことなので、別パスワードが設定されてるはず。
このプロシージャ以外にもパスワードを設定する処理が有るのなら、そちらを疑った方が良いかも知れません。
( 設定するパスワードを間違えたとか、別パスワードを設定すべきシートを取り違えたとか・・・ )
全コードを「password:=」で検索し、「シートA」へどのようなパスワードが設定し得るのか調べてみてはいかがでしょう。
「シートA」へ設定し得るパスワードが複数存在し、エラー後の「シートA」がいずれかのパスワードで解除できるなら、ある程度
悪さをしてる処理が絞り込めるのでは・・・
[返信 3] Re : シート保護パスワードの解除し再設定
投稿者 : ぱす 投稿日時 : 2024/10/26(Sat) 14:39:15
てらてら様、ピロリ様。ありがとうございます。
調べた結果、関連していた別の処理が原因でした。
お手数をおかけしました。
親切にありがとうございます。
てらてら様、ピロリ様。ありがとうございます。
調べた結果、関連していた別の処理が原因でした。
お手数をおかけしました。
親切にありがとうございます。
当掲示板について
- Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
- 記事内ではHTMLのタグは使用できません。
- 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
- Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
- Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
( 処理日時 : 2025-07-01 06:58:38 )