Home » エクセルマクロ・Excel VBAの使い方 » Sheets・Worksheet » 複数のシートを保護するマクロ

複数のシートを保護するマクロ

対象:Excel2003, Excel2007, Excel2010, Excel2013

複数のシートを保護するマクロ

「マクロ 複数 シート 保護」
「エクセル マクロ シートを一括で保護する ピポットだけ使える」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスがあることに気づきました。

複数のシートを一括して保護するマクロ、ピボットテーブルの含まれるシートを除いたその他のシートを保護するマクロを探している方による検索です。
(ちなみに、とてもよくあるミスですが、
ットテーブルではなく、
ットテーブルが正しい呼称です)

[スポンサードリンク]

複数のシートを保護するサンプルマクロ

以下のようなマクロで複数のシートを一気に保護することができます。

Sub アクティブシートから後のシートを保護する()
 Const PASS = "hogehoge"

 Dim i As Long
 For i = ActiveSheet.Index To Sheets.Count
  Sheets(i).Protect Password:=PASS
 Next i
End Sub

上記のマクロを実行すると、アクティブなシートから後ろ(右側)のシートが、「hogehoge」というパスワードが設定されて保護されます。

定数・PASSに「hogehoge」という文字列を設定し、
 Const PASS = "hogehoge"

アクティブなシートから最後のシートまでループを回して、
 For i = ActiveSheet.Index To Sheets.Count

定数・PASSで設定した文字列を、引数・Passwordに指定しながら、Worksheetオブジェクト・ChartオブジェクトのProtectメソッドを実行しています。
  Sheets(i).Protect Password:=PASS

For~Nextループ文を、
 For i = ActiveSheet.Index To Sheets.Count
から
 For i = 1 To Sheets.Count
に変更すれば、全シートの保護を行うことができます。

ピボットテーブル以外の全シートを保護するサンプルマクロ

以下のようなマクロで、ピボットテーブルの含まれない、すべてのシートを一気に保護することができます。

Sub ピボットテーブル以外の全シートを保護する()
 Const PASS = "hogehoge"

 Dim i As Long
 For i = 1 To Sheets.Count
 With Sheets(i)
  If .PivotTables.Count = 0 Then
   .Protect Password:=PASS
  End If
 End With
 Next i

End Sub

はじめに定数・PASSにパスワードを設定しているのは先のマクロと同じです。
 Const PASS = "hogehoge"

先頭のシートからすべてのシートに対してループを回して、
 For i = 1 To Sheets.Count

シート上のPivotTablesコレクションオブジェクトのCountプロパティが「0」なら、ピボットテーブルが存在しないシートということなので、
 With Sheets(i)
  If .PivotTables.Count = 0 Then

定数・PASSで設定した文字列を、引数・Passwordに指定してProtectメソッドを実行しています。
   .Protect Password:=PASS

関連語句
VBA, Visual Basic for Applications

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Sheets・Worksheet » 複数のシートを保護するマクロ

「Sheets・Worksheet」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.