この記事では、ExcelのVBAマクロを使用してシートを確認して保護をかけたり解除したりする設定について解説していきます。
ポイントとしては、`Protect`, `Unprotect`, `InputBox`を使用することです。
なお、下記の解説では完全な初心者でもわかりやすいようにあえて変数名(あなた自身が名付けていい場所)を少々変わった名称にしております。
そのため、あなた自身がご活用の際には、ここを適切な(英語表記でしっくりくるものが一般的)ものに変更してご活用くださいね。
それでは詳しく見ていきましょう!
VBAマクロでシート保護をかけたり解除したりする設定方法【確認・ダイヤログでシート名指定】【InputBox】
それではまず、VBAマクロでシート保護をかけたり解除したりする方法について解説していきます。
保護をかけたり解除させたりするシート名をダイヤログでを指定する形にしてみますね。
なお、このシート名をチェックし、保護がかかっているものは解除、かかっていないものは保護(ロック)させる仕様とします。
Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。
Sub SheetHogoSettei()
'シート名をダイヤログから入力
Dim sheetMingawa As String
sheetMingawa = InputBox("保護をかける・解除するシート名を入力してください。", "シート名入力")
'シート保護の状態を確認
If ThisWorkbook.Sheets(sheetMingawa).ProtectContents = True Then
'シート保護を解除
ThisWorkbook.Sheets(sheetMingawa).Unprotect
Else
'シート保護をかける
ThisWorkbook.Sheets(sheetMingawa).Protect
End If
End Sub
コードのAlt+F8を押し、マクロ選択画面でSheetHogoSettei関数を実行します。
【ステップ】:
1. ユーザがダイヤログでシート名を入力します。
2. そのシートが保護されているかどうかを確認し、保護されていれば解除、保護されていなければ保護をかけます。
VBAマクロで複数のシート保護をかける・解除する方法【別のcsvのA列に複数シート名記載】【Protect, Unprotect】
続いては、VBAマクロで複数のシート保護をかける・解除する方法について解説していきます。
複数シートの場合は、別のinput用csvのA列に指定したいシート名が並んで記載されているとしましょう。
このシート名を読み込み、元のエクセルファイルの複数シートをロック、解除させます。
Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。
Sub SheetTakusanHogo()
Dim sheetList As Worksheet
Dim i As Long
Dim lastRow As Long
'CSVからシート名を取得
Set sheetList = Workbooks("sheetList.csv").Sheets(1)
lastRow = sheetList.Cells(sheetList.Rows.Count, "A").End(xlUp).Row
'各シートの保護・解除を行う
For i = 1 To lastRow
Dim targetSheetName As String
targetSheetName = sheetList.Cells(i, 1).Value
If ThisWorkbook.Sheets(targetSheetName).ProtectContents = True Then
ThisWorkbook.Sheets(targetSheetName).Unprotect
Else
ThisWorkbook.Sheets(targetSheetName).Protect
End If
Next i
End Sub
コードのAlt+F8を押し、マクロ選択画面でSheetTakusanHogo関数を実行します。
【ステップ】:
1. CSVファイルからシート名のリストを取得します。
2. それぞれのシートに対して保護・解除を行います。
VBAマクロですべてのシート保護をかける・解除する方法【Protect, Unprotect】
続いては、VBAマクロですべてのシート保護をかける・解除する方法について解説していきます。
ブック内のすべてのシートの対して一括処理します。
Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。
Sub SubeteNoSheetHogo()
Dim sheetHensuu As Worksheet
'すべてのシートに対して処理を行う
For Each sheetHensuu In ThisWorkbook.Sheets
If sheetHensuu.ProtectContents = True Then
sheetHensuu.Unprotect
Else
sheetHensuu.Protect
End If
Next sheetHensuu
End Sub
コードのAlt+F8を押し、マクロ選択画面でSubeteNoSheetHogo関数を実行します。
【ステップ】:
1. Workbook内のすべてのシートに対して、シート保護の状態を確認します。
2. 保護されているシートは解除し、保護されていないシートは保護します。
まとめ
以上で、ExcelのVBAマクロを使ってシートを保護・解除する方法を学びました。
これを活用して、Excelのシートを効果的に管理してください!