- ベストアンサー
複数のシートで同時にシートの保護をする方法について
- エクセルデータを一括して保護する方法について調査していますが、複数のシートで同時に保護をかけることは難しいようです。マクロを使用する方法もありますが、詳しくない方には難しいかもしれません。
- 現在、エクセルで出勤表を作成しています。31枚の日付シートと個人別のシート20枚、一覧状態のシート3枚があります。個別にまとめているシート20枚にキーワード付きのシート保護をしたいのですが、キーワードが共通であるため、セル設定でのロック解除は適さないようです。
- より簡単な方法があれば教えていただきたいです。マクロの使用方法や他の方法についてもアドバイスをいただけると幸いです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
回答No2です。 保護したシートを解除するのでしたら次のようなマクロになりますね。 Sub シートの保護の解除() Set WS1 = Worksheets("Sheet1") Dim RowPos As Integer Application.ScreenUpdating = False For RowPos = 1 To 20 If WS1.Cells(RowPos, "A") = "" Then Exit For Worksheets("" & WS1.Cells(RowPos, "A") & "").Activate ActiveSheet.Unprotect Password:="1234" Next WS1.Activate Application.ScreenUpdating = True End Sub
その他の回答 (2)
- KURUMITO
- ベストアンサー率42% (1835/4283)
例えばシート1のA1セルからA20セルに保護をしたいシートの名前を入力しておきます。 そこで次のようなマクロを実行することでそれらのシートが保護されます。 Sub シートの保護() Set WS1 = Worksheets("Sheet1") Dim RowPos As Integer Application.ScreenUpdating = False For RowPos = 1 To 20 If WS1.Cells(RowPos, "A") = "" Then Exit For Worksheets("" & WS1.Cells(RowPos, "A") & "").Activate With ActiveSheet .EnableSelection = xlUnlockedCells .Protect Password:="1234", UserInterfaceOnly:=True End With Next WS1.Activate Application.ScreenUpdating = True End Sub
お礼
ありがとうございます。 お陰さまでうまくいきました♪
補足
保護解除時のマクロも合わせて教えていただけませんでしょうか? 宜しくお願い致します
- merlionXX
- ベストアンサー率48% (1930/4007)
hiroteeさんこんばんは。merlionXXです。 「一部を同時に」という意味は、54シート中の20シートにだけ保護をかけるという意味なんですね? マクロで一括してやりたいなら、名前か何かでその20シートを他のシートと識別する必要があります。 たとえば、日にちのシートの名前はすべて"日"で終わっている。 一覧状態のシートには"○○一覧△△"と、一覧という文字が入っている。 その定義に当てはまらないシートがシート保護の対象の個人別のシートになる。 もし、このように識別が可能なら簡単です Sub TEST01() Dim ws As Worksheet For Each ws In Worksheets If Right(ws.Name, 1) <> "日" And InStr(ws.Name, "一覧") = 0 Then ws.Protect Password:="merlion", DrawingObjects:=True, Contents:=True, Scenarios:=True End If Next ws End Sub これでパスワードがmerlionでシート保護されました。
お礼
ありがとうございます。 こちらの式でも上手く行きました。
お礼
ありがとうございます。 ロック、解除ができるよになりました。 マクロを初めて使ったのですが、これから少しずつ勉強しようと思いました。 本当にありがとうございます。