【ExcelVBA】エクセルで選択したすべてのシートを保護するマクロ

選択シート保護①
スポンサーリンク

どうも、あおです。

 

 

 

エクセルで複数シートがあるファイルを管理する際、

これとこれのシートは(間違っても)変更したくない

といったことがある場合に便利なマクロ

 

 

 

1.対象のエクセルを開き、Alt+F11を押して、コードを記入画面を起動

 

 

選択シート保護②

 

※officeのバージョンは、古いですが2003を使用しています。

バージョンによっては、コードを書く画面の表示方法等が

異なるかもしれないので、ネットで調べてください

 

 

 

2.ツールバー「挿入」→「標準モジュール」を押下して、コード貼付け

 

選択シート保護③

 

 

 

 

選択シート保護④

 

 

【コード】

 

Sub ChoiceSheetLock()

Dim i As Integer
Dim intShCnt As Integer
Dim strSheetName() As String
Dim defaultSheet As Object

Set defaultSheet = ActiveSheet

Application.ScreenUpdating = False
With ActiveWindow
intShCnt = .SelectedSheets.Count
ReDim strSheetName(1 To intShCnt)
For i = 1 To intShCnt
strSheetName(i) = .SelectedSheets(i).Name
Next i
.SelectedSheets(1).Select
For i = 1 To intShCnt
Sheets(strSheetName(i)).Protect
Next i
End With

defaultSheet.Activate

End Sub

 

 

 

 

3.シートがある画面に戻り、「すべてのシートを選択」

 

選択シート保護⑤

 

※office2003では、シート名のところで右クリックすると表示されます。

 

 

 

 

4.Alt+F8を押して、実行画面を表示し、右上の実行ボタンを押下

 

選択シート保護⑥

 

 

 

 

選択したシートがすべて保護されました

選択シート保護⑦

 

 

 

■選択したシートの保護解除を行う場合は、

以下のマクロを同様に実行してください。

 

Sub ChoiceSheetUnLock()

Dim i As Integer
Dim intShCnt As Integer
Dim strSheetName() As String
Dim defaultSheet As Object

Set defaultSheet = ActiveSheet

Application.ScreenUpdating = False
With ActiveWindow
intShCnt = .SelectedSheets.Count
ReDim strSheetName(1 To intShCnt)
For i = 1 To intShCnt
strSheetName(i) = .SelectedSheets(i).Name
Next i
.SelectedSheets(1).Select
For i = 1 To intShCnt
Sheets(strSheetName(i)).Unprotect
Next i
End With

defaultSheet.Activate

End Sub

 

 

これで重要なデータが間違って書き換わってしまうのを防止できます。

PC
スポンサーリンク