• ベストアンサー

VBAでブック保護非保護を判定するには?

エクセルVBAでブックが保護されているのかどうかを判定するにはどう書けばいいのでしょうか? If ActiveWorkbook.Protect Then ではだめでした。 また、シート保護の判定方法も教えてください。

  • moooon
  • お礼率70% (118/167)

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

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

こんにちは。こんな感じで判別できますけど、もっと簡単な方法あるのかな? ・ブックが保護されているか?   With ActiveWorkbook     If (.ProtectStructure Or .ProtectWindows) Then       MsgBox "ブックは保護されてます"     Else       MsgBox "ブックは保護されてません"     End If   End With ・シートが保護されているか?   With ActiveSheet     If (.ProtectContents Or .ProtectDrawingObjects Or .ProtectScenarios) Then       MsgBox "シートは保護されてます"     Else       MsgBox "シートは保護されてません"     End If   End With

moooon
質問者

お礼

お礼がおそくなり大変申し訳ありませんでした。 ありがとうございました。

その他の回答 (2)

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.3

「ツール」→「保護」→「ブックの保護」を選択すると  □シート構成  □ウィンドウ があります。シート構成に対応するプロパティが  ActiveWorkbook.ProtectStructure ウィンドウに対応するプロパティが  ActiveWorkbook.ProtectWindows になります。どちらもタイプはBooleanです

moooon
質問者

お礼

お礼がおそくなり大変申し訳ありませんでした。 ありがとうございました。

回答No.1

MsgBox "シート構成:" & ActiveWorkbook.ProtectStructure & Chr(10) & _      "ウィンドウ:" & ActiveWorkbook.ProtectWindows で、判断できます。(Excel2000) シート構成が保護されていれば、は、 If ActiveWorkbook.ProtectStructure = True Then でいかがでしょうか。

moooon
質問者

お礼

お礼がおそくなり大変申し訳ありませんでした。 ありがとうございました。

関連するQ&A

  • エクセルVBAでブック保護のUserInterfaceOnly:=Trueはダメ?

    エクセル2000です。シート保護ならUserInterfaceOnly:=TrueでVBAでの変更は可能ですが、Book保護にもそういう機能はないのでしょうか?試しに、 Sub TEST1() ActiveWorkbook.Protect Password:="merlion" , UserInterfaceOnly:=True End Sub とやってみましたが、エラーになってしまいました。(泣)

  • VBAでファイルの読み取り保護を判定するには?

    VBAでファイルの読み取り保護を判定するには? エクセルVBAで開いたexcelファイルに保存オプションで指定する「読み取りパスワード」が設定されているか否かを判定するにはどの様な記述をするのでしょうか。 ブックの保護非保護判定は、質問番号:2285577 moooonさんの質問にあるのですが・・・

  • VBAでのブック・シートの保護・解除について

    エクセル2010のVBAでのブック、シートの保護&解除の方法について教えて頂きたく、 質問させて頂きます。 消されては困るシートや数式がある関係で、ブックオープン時にVBAでブックとシートにそれぞれパスワードをかけて保護しています。 VBAではシートの削除、作成、コピーなどを行っているため、VBA実行時のみ、保護を解除させるようにしたいと思います。 ただ、対象のシート自体にも入力したい項目があるため、その箇所については保護を解除しておく必要があります。 そして、VBA実行後、再度、その箇所以外にパスワードで保護をかけ直します。 イメージとしては下記のような流れになります。 対象ブック:ブックA 対象シート:シート1 パスワード:1234(それぞれ) 常時保護を解除しておきたいセル:range("A6:H106") 1.(オープン時には、)ブック保護&特定のセル以外のシート保護 2.VBA実行時には全ての保護解除 3.VBA終了時に、1の状態に戻る どうぞよろしくお願い致します。

  • エクセルVBAでシート名検索

    エクセル2000です。 あるブックにAAAという名前のワークシートが存在するかどうかの判定方法の質問です。 現在はそのブックを開き、 Sub test() For Each sh In ActiveWorkbook.Worksheets If sh.Name = "AAA" Then flag = "ありまする。" Else flag = "ないでござる。" End If Next MsgBox flag End Sub のように判定しています。 質問は、 1.開かずに判定することは可能かどうか?可能ならその方法 2.上記コードのように各シート総当り以外にシート名を検索する方法があるか?あるならその方法 です。よろしくお願いします。

  • ExcelのVBAでブックの保存

    ExcelのVBAでブックを追加し保存を行っています。 その際、保存は、どこに行うのがよいのですか bookですか。sheetですか。 両方で、SaveAsができまが、使い分けがあるのでしょうか。 どのように使い分けするのでしょうか。 Workbooks.Add ActiveSheet.Name = "サンプル" ActiveSheet.SaveAs OutFileName ActiveWorkbook.SaveAs OutFileName ActiveWorkbook.Close

  • VBAプロジェクトの保護

    エクセル2002使用です。 VBAプロジェクトの保護と解除を繰り返しているうちに、保護ができなくなってしまいました。 エクセルの画面でも、セルのロック、シートの保護、ブックの保護を繰り返していました。 何か原因があるのでしょうか? また、別件なのですが、エクセルのオプションでシートの見出しをオフにして、見えなくした状態でブックの保護をかけても、保護をかけた状態でオンにできてしまいます。操作できないようにするにはどのようにしたらよいのでしょうか? エクセルとVBEの保護について詳しいHPをお知りでしたら教えてください。

  • Excelブックの保護パスワード判定方法

    VB6.0で、Excelブックが保護パスワードされているかどうかの 判定を行いたいです。 以下のようにHasPasswordプロパティを使用してみたのですが、 保護パスワード付きのExcelブックでテストしてみると Workbooks.Openの部分で処理が止まってしまい、先にすすみません。 基本的にやり方が間違えているんでしょうか? お分かりになる方がいらっしゃいましたら、教えてください。 よろしくお願いします。   Dim xlApp  As Excel.Application   Dim xlBook  As Excel.Workbook   Set xlApp = CreateObject("Excel.Application")   Set xlBook = xlApp.Workbooks.Open("C\:TEST.xls") If xlBook.HasPassword Then Msgbox("保護パスワードあり") Else Msgbox("保護パスワードなし") End If   Set xlSheet = Nothing   xlBook.Close   Set xlBook = Nothing   xlApp.Quit   Set xlApp = Nothing

  • ブックの保護ができないんですけど・・・

    エクセル2000であるファイルを誤って変更をかけてしまわないようにブックの保護をしたのですが、簡単に変更することができます。 シート毎にシートの保護をすると入力が制限されるのですが、ブック全体を保護することはできないのでしょうか? シートがたくさんあり面倒なので・・・。 どなたか判る方みえましたら教えてください。

  • EXCELのBOOKの保護

    EXCELでBOOKを他人に見られたくないときは どうしたらよいのでしょうか? ツール→保護→BOOKの保護でやってみたのですが ガンガン見られてしまいます。 これって私の考える「保護」とは違うのですか? また「シートの保護」と「ブックの保護」はどう違うのですか? ブックの保護の「シート構成」と「ウィンドウ」とは? 質問が多数になりましたがよろしくお願いいたします。

  • エクセルのシートの保護、ブックの保護について

    エクセルのシートの保護、ブックの保護について いつもお世話になっております。 他のエクセルファイルとリンクしているエクセルのファイルを開いたときに、リンクの更新が表示されます。 ファイルを開いたときにリンクの更新がされないようにしたいのですが、シートの保護、ブックの保護でリンクが更新されないようにはできないでしょうか? それとも、リンクそのものを解除するしか方法がないのでしょうか…。

専門家に質問してみよう