プロが教える店舗&オフィスのセキュリティ対策術

12個のシートのあるエクセルファイル【12か月分の帳簿】を1つずつシートの保護をすると同じ作業を12回しないといけないですが1回でできる方法はないでしょうか?

マクロを使えばできるようですがその際、編集したいセルはどのように選択すればいいか教えて頂けないでしょうか?

よろしくお願い致します

質問者からの補足コメント

  • 教えて頂きありがとうございます

    マクロの設定方法は下記であっていますでしょうか?

    この通りやってみましたができませんでした・・・

    https://ecoslyme.com/excel-macro-protection/

    No.1の回答に寄せられた補足コメントです。 補足日時:2023/03/29 14:03
  • ご回答ありがとうございます

    URLの・Sub 全シートの保護()を試しております

    全てのシートの保護を解除しAlt+F11で挿入→標準モジュールでコピペ→実行→保存でファイル形式をマクロ有効ブックでデスクトップに保存しております。

    上記のやり方が間違っていますでしょうか?

    保存したものを開いても全シートの保護がされておらず最初にシートの保護を解除する前の、もともと保護されていたセルのみ保護されています

    chrome-extension://efaidnbmnnnibpcajpcglclefindmkaj/https://www.pref.saitama.lg.jp/documents/119761/ …

    こちらは試してみましたが変わりがありません

    No.2の回答に寄せられた補足コメントです。 補足日時:2023/03/29 15:18

A 回答 (3件)

■現状


シート保護をしてある。
編集可能なセル、編集不可能なセルが存在している。

■やりたいこと
完全に編集できないようにしたい。

■参考サイトのマクロ実行結果
シート保護はされる。
編集可能なセル、編集不可能なセルが存在している。
編集できるセルが残ったままじゃないか!!

という状況だと仮定するなら・・・

セルに『シート保護されようとも編集できるよ』って設定されてる。
シート保護しても編集可能なセルは、セルの書式の添付画像のところのチェックが外れててませんか?


全部編集不可の状態にするなら、
参考にしていたURLのマクロを用いるのであれば1行加えて下さい。

Sub 全シートの保護()
  Dim sh As Object
  On Error Resume Next
  For Each sh In Sheets
    sh.Cells.Locked = True '★
    ActiveWindow.ActiveSheet.Range("A1").Select
    sh.Protect
  Next sh
End Sub

★マークがついた行です。
これは、シートの全セルに対して『ロック』(添付画像の矢印部分)に「チェックを入れる」という処理です。


私の挙げたマクロでは、
・全セルのロックのチェックを入れる。
・編集できる範囲のチェックだけを外す。
とい処理をしています。
★と同じような行も含まれているのがわかると思います


・・・・という回答で解決するかな?
「エクセルの複数シートの保護を一括でする方」の回答画像3
    • good
    • 0
この回答へのお礼

詳しく教えて頂きありがとうございました

お礼日時:2023/03/30 18:39

補足コメント拝見しました。


URL先のマクロは動作したのですか?

コピペ用の部分に改行抜けがありましたが・・・
Sub 全シートの保護解除()【改行】Dim sh As Object

URL先のマクロは動作したのですか?
それすら動作しなかったってことでしょうか?
回答のマクロが動作しない、ということでしょうか?
「できなかった」と言われても、どういう結果になったのかも書いてないと対応は不可能です。

私の方で試したところでは、
URL先の
・Sub 全シートの保護()
・Sub 全シートの保護解除()
のどちらも正常動作しますし、先の回答で挙げた
・Sub 全シート保護()
も正常動作します。


考えられることは・・・
回答に挙げたマクロを最初に実行する際、
既に既にシートに保護をかけているなら全部解除しておいて下さい。

まさか、という要因としては・・・
マクロをモジュールに貼り付けただけで「実行」していない…なんてことではないですよね??
この回答への補足あり
    • good
    • 0

マクロは使ったことがあるのかな?



シート保護にはパスワード"pass"で設定。
任意に変更してもいいし、
忘れそうな場合は設定せず""としてもいいです。


Sub 全シート保護()
  Dim ws As Worksheet
 
  For Each ws In ActiveWorkbook.Worksheets
    With ws
      .Unprotect Password:="pass" ' パスワードを設定
      .Cells.Locked = True
      .Range("B3:C33").Locked = False
      .Range("E3:F33").Locked = False
      .Protect Password:="pass", DrawingObjects:=True, Contents:=True, Scenarios:=True
    End With
  Next ws
End Sub

この中の
.Range("B3:C33").Locked = False
.Range("E3:F33").Locked = False
ここのセル範囲が、編集可能な部分になります。
実際のシートに合わせて、同じように書き加えて下さい。

まずはこれでお試しを。
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A