• ベストアンサー

エクセル2010のシート保護マクロについて

すべてのシートを保護してくれるマクロを教えてほしいのですが、機能として 「ロックされていないセル範囲の選択」と「セルの書式設定」の二つの機能を許可したものを教えてください。また、逆にすべてのシートの保護を解除するマクロもお願いします。 エクセル初心者のため、見当はずれなことを聞いていたら申し訳ありませんが、いくら探しても上記のようなものを探すことができず、、、。シートが80ほどあるもので、困り果てています。 よろしくお願いします。

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

  • ベストアンサー
  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.2

こんにちは。 すべてのシート、ということなら、下に示すような感じで、、、。 パスワードを設定している(する)場合は、 例えば、"abc123" なら、 Password:="" の部分を Password:="abc123" のように、そちらで書き換えて(2箇所)ください。 .ScrollArea = "" は大抵は必要のないレアなオプションですが、 範囲の選択を許可する場合には、この設定を確実に解除します。 絶対にScrollAreaを設定したりしない、なら、この処理は不要です。 以下のコードを標準モジュールに貼り付けてください。 Sub PotectAllWorkSheets() ' 8751940 保護   Dim wks As Worksheet   For Each wks In Worksheets     With wks       .ScrollArea = ""       .EnableSelection = xlUnlockedCells       .Protect Password:="", _         DrawingObjects:=True, Contents:=True, _         Scenarios:=True, AllowFormattingCells:=True     End With   Next End Sub Sub UnpotectAllWorkSheets() ' 8751940 保護解除   Dim wks As Worksheet   For Each wks In Worksheets     wks.Unprotect Password:=""   Next End Sub 余計なことかもですが、#1さんのコードは、 ActiveSheet を Worksheets(i) に書き換えれば機能すると思います。 因みに、こういうマクロを考える時は、 まず、ひとつのシートについて、やりたいことが出来るようなマクロを書いてみる。 これは、[マクロの記録]で実際の作業を手を動かして行えば、 Sub Macro1() ' ' Macro1 Macro ' '   Sheets("Sheet1").Select   ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _     , AllowFormattingCells:=True   ActiveSheet.EnableSelection = xlUnlockedCells End Sub ↑こういったコードが得られるので、これを骨格にして、 次に「すべてのシート」でループさせること、次に「保護の解除」、 と段階を踏んでひとつひとつ出来るようにして、 解らない段階を質問するようにしていくと上達が早くていいです。

muka1985
質問者

お礼

求めていたことが完璧にできました! 今後のことまでレクチャーいただき、とっても助かりました! 本当にありがとうございます!

その他の回答 (1)

  • mar00
  • ベストアンサー率36% (158/430)
回答No.1

Sub 保護() For i = 1 To Worksheets.Count Worksheets(i).Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _ , AllowFormattingCells:=True ActiveSheet.EnableSelection = xlUnlockedCells Next i End Sub Sub 保護解除() For i = 1 To Worksheets.Count Worksheets(i).Unprotect Next i End Sub でどうでしょうか。

muka1985
質問者

お礼

すみません。今回はno.2さんをベストアンサーに選ばさせていただきました。 一番最初に回答いただきありがとうございました!

関連するQ&A

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

    エクセル2007の、シートの保護について シートの保護の際、「このシートのすべてのユーザーに許可する操作」にて ・ロックされていないセルの選択 ・セルの書式設定 にチェックを入れたのですが、ブックを保存して閉じて、再度開くと ・セルの書式設定 のみチェックの入っていない状態で開かれます。 シートは保護された状態なため、いちいち保護を解除してチェックを入れ直し、 再度保護するのが面倒なのですが、ブックを閉じても 「このシートのすべてのユーザーに許可する操作」の設定が変わらない方法はあるのでしょうか? どうぞ、よろしくおねがいいたします。

  • エクセル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つも質問して申し訳ありませんが、ご存知の方はご教授お願いします。 よろしくお願いします。

  • EXCEL保護シートで、Σを使いたい。

    EXCEL2002のシートに保護をかけた時に、Σがグレーアウトして表示されません。 表示させるには、どのようにすればよいでしょうか? Σを入力するセルは、ロックをかけておらず、タテ(列)の合計を計算させます。 保護されたシートのすべてのユーザーに許可する操作は 「ロックされたセル範囲の選択」「ロックされていないセル範囲の選択」「セルの書式設定」「列の書式設定」「行の書式設定」「行の挿入」「行の削除」「並べ替え」にチェックをいれています。

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

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

  • エクセルシートの保護、マクロについてお願いします!

    はじめまして。 マッサージ店の集計表をエクセルで作りました。 いろいろなスタッフが入力する為、計算式を入れたセルを消してしまったりして、 集計が狂ってしまうので困っています。 エクセル初心者なので説明がわかりにくいと思いますが、よろしくお願いいたします。 内容は、まずはシートごとに 集計、プルダウン用、1日、2日・・・31日 と分かれています。 日付シートにはプルダウンでスタッフや、コースなど選択できるようにしてあります。 集計、プルダウン用シートから各日付シートにリンクしています。 日付シートで入力するセルはセルの保護のロックを解除して、シートの保護をすれば大丈夫なのですが、 力の項目も結構数があるので、相当時間がかかりそうなのです。 マクロなど使い一気にまとめて、セルの保護のロック解除、シートの保護ができないものなのでしょうか? 説明が不十分でしたら、できる限り説明させていただきます。 是非ともよろしくお願い致します。

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

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

  • シートを保護したらマクロがきかない?

    マクロもクエリも全くの初心者です。 仕事で他人が作成したエクセルデータを加工しなければなりません エクセルです 例えばSheet1上で、  セルA1 マクロ設定されており、クリックするとUserFormウィンドウが      開き、入力値を選択できるようになっている      →保護しておきたい  セルB1 文字列が入力されている      →保護の対象外にしたい。  セルC1 数式が入力されている      →保護しておきたい という状況で、 まずやってみた方法は「セルの書式設定」→「ロック解除」などを した上でシート保護をかけたのですが、セルA1のマクロも無効に なってしまいます。 個人的には入力規則等で対応できるかと思うのですが、 マクロの解除は不可能と(会社から)指示がありました。 マクロは不勉強ですので、何とか簡単に変更したいものなのですが やはり VBAコマンドでの(Activesheet.Unprotect?) 変更が必要になるのでしょうか? この機会にVBAに触れておくべきと考え質問さえていただきました。 そもそもアラ40の私に理解できうるものか不安を感じますが・・(汗) EXCELは2007だったと思います。(Verによって異なりますか?) 大変無粋ですが、初心者向きにご回答いただければ幸いですm(__)m

  • Excelでsheetに保護をかけたらマクロは動きませんか?

    マクロ初心者です。 Excelでsheetに保護をかけてしまうとマクロは動か なくなるものなのでしょうか?ちなみに、マクロで コピー等の処理を行うセルのロックは解除しておいた のですが…。 sheetを2つ作って、一方の保護付きsheetに情報を 入力をしておき、もう一方の保護無しsheetに同じ 情報をコピーした上でマクロ処理させる、という 方法は考えたのですが、もっとスマートな方法を ご存知でしたら教えて下さい。よろしくお願い致し ます。

  • EXCELマクロ 保護されているシートのダイアログを表示させない方法

    いつもお世話になります。 EXCEL2000のマクロについて質問です。 ボタンでシート保護や保護の解除をしています。 (データ確定後に変更させないため) 保護されているときにシートをダブルクリックとすると EXCELより「変更しようとしているセルまたはグラフは保護されているため読み取り専用となっています。・・・変更するには・・・」 のメッセージが表示されます。 このメッセージを表示したくない場合はどうすればよいでしょうか。 Application.DisplayAlerts = False ではできませんでした。 EXCEL2002以降ではロックされたセルの選択の許可のチェックを外すことでできそうなのですが、2000にはそのような選択肢がありません。 どうぞ宜しくお願い致します。

  • エクセル「シート保護」をすると、「ハイパーリンク」が動きません

    エクセルで「シートの保護」をかけると、「ハイパーリンク」が動きません。 同じシート内のハイパーリンクです。例えば、先頭のセルA1からA70へ、A180へ、A250へなど、カーソルを上下に飛ばして動かそうと設定をしました。その後、関数を保護したいので、「シートの保護」をかけたところ、ハイパーリンクが動きません。ハイパーリンクのセルの状態は、「セルの書式設定」の「保護」タブでは、「ロック」のチェックを外しています。シートの保護は、「ロックされたセル範囲の選択」のチェック無し、「ロックされていないセル範囲の選択」のみチェックを入れています。  どうすればいいのでしょうか?教えてください。

専門家に質問してみよう