VBAでトラブル発生!パスワードの解除方法は?

このQ&Aのポイント
  • VBAを使用してシートの保護を行っているとき、パスワードを設定していないのに解除する際にパスワードを求められる状況になってしまいました。解決策を教えていただけませんか?
  • VBAでシートの保護を行っているとき、パスワードを設定していないのに解除する際にパスワードが必要になってしまいました。どうすれば解除できるのでしょうか?
  • VBAでシートの保護をしているのですが、パスワードを設定せずに保護解除するときにパスワードを求められるようになってしまいました。どうすれば解決できるのでしょうか?
回答を見る
  • ベストアンサー

VBAでトラブル発生。

Win7、Excel2010使用。 VBAにて、シートの保護(ロックされたセル範囲の選択、 ロックされていないセル範囲の選択、セルの書式設定)を しようと思い、見よう見まねで下記のコードを入れ実行した ところ、パスワード設定していないのに、解除する際に パスワードを求められるようになってしまいました。 その前までは通常のProtectで保護・解除ができていたので 原因は、変更したコードの実行によるものだと思います。 因みにSheet1は、パスワードなしで解除でき Sheet2、Sheet3はパスワードを求められるような 状況です。 【コード】 Sub test() Sheets("Sheet1").protect (AllowFormattingCells = True) Sheets("Sheet2").protect (AllowFormattingCells = True) Sheets("Sheet3").protect (AllowFormattingCells = True) End Sub このパスワードの解除方法など解決策がありましたら、 教えていただけないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

こんにちは。 これで外れるはずです。 Sub test2()  Sheets("Sheet1").Unprotect (AllowFormattingCells = True)  Sheets("Sheet2").Unprotect (AllowFormattingCells = True)  Sheets("Sheet3").Unprotect (AllowFormattingCells = True) End Sub ちなみに、 質問のコードは、以下のようにします。 Sub test()  Sheets("Sheet1").Protect AllowFormattingCells:=True  Sheets("Sheet2").Protect AllowFormattingCells:=True  Sheets("Sheet3").Protect AllowFormattingCells:=True End Sub

-antsu-
質問者

お礼

WindFallerさん、早速の回答ありがとうございます。 教えて頂いた方法で無事解決できました! 正しいコードまで教えて頂き、感謝感謝です。 ありがとうございました!

関連するQ&A

  • シート保護とグループ化機能を両立するマクロで

    エクセル2010です。 任意のセルにロックをかけて、シートを保護しています。 さらに、グループ化の開閉(左の欄で+と-で展開したり畳んだりする)機能を使いたのですが、シートの保護がかかっていると通常ではこれができません。 そこで調べたところ、以下のマクロでそれが両立できることがわかりました。 Sub 保護したままグループ開閉() With Worksheets("Sheet1") .EnableOutlining = True .Protect UserInterfaceOnly:=True End With End Sub しかし、シート保護のメニューで「ロックされていないセルの範囲選択」と「セルの書式設定」にチェックを入れて許可にしているのですが、このマクロをかけると、「セルの書式設定」のチェックが外れてしまい、文字の色等が変えられなくなってしまいます。 これを防止するには、上記のコードをどのように変えれば良いでしょうか? アドバイスよろしくお願いいたします。

  • エクセルVBA シートの保護について

    エクセルの「シートの保護」について教えてください。 特定のシートのみ、保護したいと思っています。 そのシートの一定の範囲には、入力のみを許可したいです。 というのも、他の範囲(保護したい範囲)には、数式やvbaが設定されており、むやみやたらに「切り取り」や「行や列の削除」をされると困るからです。 そこで、 入力を許可する範囲を選択 →セルの書式設定 →保護のロックを外す →シートの保護 →「ロックされていないセル範囲を選択」を選択 しました。 この状態でマクロを実行すると、エラー1004(保護されたシートに対してこのコマンドは使用できません)とエラーが出ました。 エラー箇所は以下のとおりです。 Intersect(Worksheets("sheet1").Range("C5").CurrentRegion, Worksheets("sheet1").Rows("5:65536"), Worksheets("sheet1").Columns("C:T")).Select (質問1) ロックを外し、その後にシートの保護をする際、「全範囲を選択してから」シートの保護を行うものなのでしょうか。 それともシートの保護をすれば、自動的に、ロックを解除した範囲以外(全範囲)で保護したことになるのでしょうか。 「全範囲を選択してから」シートの保護をすると、ロックを外したセルを選択しても、アクティブセルが罫線で囲われずどこを選んでいるのか分からなくなってしまったので。 もし、あえて全範囲を選択する必要がないなら、それでいこうと思っています。 (質問2) 上記エラーを解消するには、どうしたら良いのでしょうか。 全範囲を選択できないように保護していることが原因かと思い、全範囲について「シートの保護→ロックされたセル範囲の選択」を選んでもエラー解除できませんでした。 また、Intersect.Selectの一行上に「ThisWorkbook.Unprotect」と追加しても解除できませんでした。 2つも質問して申し訳ありませんが、ご存知の方はご教授お願いします。 よろしくお願いします。

  • VBA Pasteで教えて下さい!

    Book1で指定したセル範囲(C2:C41)を Book2のSheet1の(AB4:AB43)とSheet2の(AU10:AU49)にペーストを行うに あたり、ボタン押下にて実行する下記コードをBook1に作成しましたが、 2番目のPasteで実行時エラー1004「アプリケーション定義または オブジェクト定義のエラーです」と出ます。 複数Sheetの別々のセルにペーストする方法を 教えていただけないでしょうか? Book1とBook2は共に開いた状態です。 Book2のシートは、それぞれVBAで保護をかけていますが、 .protect UserInterfaceOnly:=Trueで変更可能な状態に しています。 Private Sub copy_Click()  Range("C2:C41").Copy  Windows("Book2").Activate  Sheets("Sheet1").Range("AB4:AB43").PasteSpecial Paste:=xlPasteValues  Sheets("Sheet2").Range("AU10:AU49").PasteSpecial Paste:=xlPasteValues  (↑ここでエラーが出ます) End sub

  • VBA 特定の範囲のシートを並べ替えをして、処理後

    VBA 特定の範囲のシートを並べ替えをして、処理後にマクロ実行前のシートを表示させたい。 EXCEL2013を使用しています。 現在、以下のような構文を使用して、保存時に実行しています。 処理は、シート名を書き換えてシート保護をかけて先頭から9番目のシートのA1へ戻るようにしています。 これを、次のような処理にしたいと考えています。 1.シート名を書き換え 2.シート保護 3.先頭から9番目のシートから、31番目のシートをシート名でソート 4.マクロ実行前に作業していたシートへ戻る ちなみに、書き換えたシート名が、"1.○○○" や、"2.△△△"などになっているのですが、"."より前の値で並び替えられると便利になります。 また、デフォルトのシート名のままのものと、書き換えられたものがあり、書き換えられたものにだけ"."つきのシート名になります。 よろしくお願いいたします。 ******************************* Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) '画面のちらつき防止 Application.ScreenUpdating = False 'シート名更新 For i = 1 To Sheets.Count Sheets(i).Select Sheets(i).Name = Range("A1").Value Next i '全シート保護 Dim ws As Worksheet For Each ws In ThisWorkbook.Worksheets ws.Protect Password:="aoken", _ DrawingObjects:=False, _ Contents:=True, _ AllowInsertingRows:=True, _ AllowDeletingRows:=True, _ Scenarios:=True, AllowFormattingCells:=True Next ws Application.Goto Sheets(9).Range("A1"), True End Sub *******************************

  • エクセルVBAで保護シートの数式取得

    ワークシートが保護されていても、そのセルA1にある数式をVBAで取得する場合 Sub test01() MsgBox Sheets("Sheet1").Range("A1").Formula End Sub でできます。 しかし、このセルが書式設定で、「保護」→「表示しない」にチェックをいれられていると「実行時エラー1004」となり取得できません。 パスワードがわかっていれば保護を解除して問題はないのですが、わからない場合、数式を取得する方法はないでしょうか?

  • エクセル97 フォームシートの保護をする時に出る"パスワード"をコード化させたい

    「表示-ツール-フォーム」でボタンを作りました。 そして、マクロの自動登録で「シートの保護」を選び「パスワード:password」を設定し、更に「password」で保護解除をし、マクロ記録終了。 そして、各コードを「シートの保護」:ボタン3、「シートの解除」:ボタン2、に設定しました。 それらを実行させてみたのですが、特に「パスワード:password」を聞かれることなく一連の作業が終了してしまいました。 コードは以下のとおりです。 Sub ボタン2_Click() ' ' ボタン2_Click Macro ' マクロ記録日 : 2004/2/9 ユーザー名 : **** ' ActiveSheet.Unprotect End Sub -------------------------- Sub ボタン3_Click() ' ' ボタン3_Click Macro ' マクロ記録日 : 2004/2/9 ユーザー名 : **** ' ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True End Sub そこで、各ボタンのクリック時に、パスワードを聞いてきてくれるコードを書き加えたいのです。 わかる方がいらっしゃいましたら、是非教えてください!! コードに関して素人ですので、できたら、全体を通してコードを教えて頂ければ助かります。 いろいろ探してみたのですが、ギブアップです。 宜しくお願い致します。

  • VBA 印刷範囲設定がうまくいかない

    変数cntに値を代入し印刷範囲が変わるという事を、以下のコードで実行しようとしています。 Sub Macro1() cnt = 9 Sheets("A").Activate 範囲 = Sheets("A").Range(Cells(1, 1), Cells(33, cnt + 1)) ActiveSheet.PageSetup.PrintArea = 範囲 上記のコードですと、シート「A」のセルA1~J33までが印刷範囲になると思ったのですが、実行すると全く関係ないセルまで印刷範囲になってしまいます。 「A」シートには罫線やデータが入力されているセルが他にもあり、どうやらそれらのセルも同じく印刷範囲とされてしまっているようなのです。(例えばK列に罫線が引いてあり、セルに色がついているとK列まで印刷範囲になる) Sheets("A").Range(Cells(1, 1), Cells(33, cnt + 1)).select とすれば、望みどおりのセル範囲A1~J33がきちんと選択されるのですが、印刷範囲ではなぜこのようなことになってしまうのでしょうか。

  • VBAで特定の範囲の入力が出来ないようにしたいのですが

    A1:B7までの表があるとします。A列B列に入力して行きます。A列入力後にB列(同行)に何かしら値が入ったら。(例えばB5)A1:B5に入力できないようにしたいのですが、その場合にどのように記述すれば良いのでしょうか。考えているのはA1:B7のロックを解除しておいてシートを保護しておく、そしてB列に入ればそこまでの範囲にロックをかけると言う感じですが。保護解除のパスワードは123とします。 Sub ロックをかける() ActiveSheet.Unprotect"123" Range("A1:XX).Locked=True ActiveSheet.Protect"123" End Sub   としたのですが、XXのところが上手くできません。 Range("B8").End(xlup)をいれて見るとエラーが出ます。そこで変数(String型)を作ってこの文でその該当セルの値を代入し、XXのところに変数を置いてみてもやはりエラーが出ます。 この表は本来もう少し大きな表で、時間外勤務を管理しようとしていて上席者がB列に承認した印に値をいれて実行するとそれまでの値が改ざんできないようにすると言うのが目的なのです。 まだまだVBAに関して勉強不足だと思いますがよろしくお願いします。

  • 計算式を保護したシートの並び替えについて @excel2007

    あちこちに計算式が入ってるシートがあり、その計算式が保護された状態で、行を並べ替えたくていろいろ試してるのですが、どうしてもできません。どなたかアドバイスお願いいたします。現在の状態は、 シート全体を選択してから「セルの書式設定」「保護」で「ロック」のチェックをはずし、 F5キー「セル選択」で数式にチェックしてOK→「セルの書式設定」「保護」で「ロック」にチェック「表示しない」にチェック、 「書式」「シートの保護」を掛ける。※ ※このとき、最初にシートの保護をかけたときは「ロックされたセル範囲の選択」「ロックされていないセル範囲の選択」だけにチェックをいれてOKしたのですが、後に、行の並べ替えをする必要がでてきたため、いったん、 「校閲」→「シート保護の解除」で保護解除し、あらためて「シートの保護」→「ロックされたセル範囲の選択」「ロックされていないセル範囲の選択」「「並べ替え」にチェックをいれてOKしました。 ただ、これで並べ替えを実行しようと「データ」→「並べ替え」すると、エラーメッセージ 「変更しようとしているセルまたは・・・保護されているため読み取り専用となっています。・・・シートの保護解除をクリックして・・・」がでます。 (注)このシートについて、保護は計算式だけでいいのですが、並べ替えは、計算式の入ってる列も、計算式が入ってない列も行う場合があります。 また、マクロについては無知なので、ご了承ください。 よろしくお願いします。

  • エクセル シートを保護してる時のセル結合

    エクセル2010を使用しています。 仕事の成果を一定の様式に記入してもらいます。書式、関数などを変更してもらいたくないのでシートに保護をかけました。 記入してもらうところだけセルのロックをはずし入力OKに設定しました。 しかし、シートの保護をかけるとロックをはずしててもセルの結合はできないんですね。なので、過去の質問からシートの保護がかかっていてもマクロですべての操作をしようできるというマクロ↓を参考にしてみました。 Sub seru() ActiveSheet.Protect UserInterFaceOnly:=True End Sub これと、セルを結合するマクロ↓を考えたのですが、どのように2つをくっつけたらいいのかがわかりません。 If TypeName(Selection)="Range"and Selection.Cells.Count>1 Then Selection.Merge ActiveSheet.Protect,AllowFormattingCells:=True End If 何かぬけているのかマクロを実行しても全く働いてくれません。 どうかよろしくです。

専門家に質問してみよう