Excel VBA 質問スレッド №2037 (解決済)

シート保護パスワードの解除し再設定

投稿者 : ぱす     投稿日時 : 2024/10/24(Thu) 23:46:51     OS : 未指定     EXCEL : 未指定
パスワード保護されたシートでマクロが実行できるように下記コードを作成しました。
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

などとして直前の値を確認してみてはいかがでしょう。

[返信 2] Re : シート保護パスワードの解除し再設定
投稿者 : ピロリ     投稿日時 : 2024/10/26(Sat) 10:37:30
私の環境でも、このコードでのエラー発生は有りませんでした。

まず、このコードに 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 )
タイトルとURLをコピーしました