Home » エクセルマクロ・Excel VBAの使い方 » Sheets・Worksheet » 保護されているシート名を一覧にするマクロ

保護されているシート名を一覧にするマクロ

対象:Excel2003, Excel2007, Excel2010

たくさんのシートが存在していて、そのうち一部のシートが保護されたExcelファイルを受け取る機会がありました。

どのシートが保護されているのかが明示されていなかったため、どれが保護されているのかを、私のほうでチェックする必要がありました。

シートの枚数がそれほどなければ特にこのようなマクロも必要なかったのかもしれませんが、結構な枚数のシートがあったため、マクロを作成しました。

[スポンサードリンク]

その保護されたシートを調べるマクロをご紹介しておきます。

▼保護されているシート名を一覧にするマクロ

Sub 保護されているシートの一覧を作成する()

 Dim sh As Object
 Dim i As Long
 Dim msg As String

 Worksheets.Add Before:=Sheets(1)
 Cells(1, 1).Value = "▼保護されているシート"

 ''A2セルからシート名を書き出すので変数を「2」に
 i = 2

 For Each sh In Sheets
  If sh.ProtectContents Then
   Worksheets(1).Cells(i, 1).Value = sh.Name
   i = i + 1
  End If
 Next sh

 If i = 2 Then
  ''保護されているシートが存在しなければ
  ''書き出し用に追加したシートを削除
  Application.DisplayAlerts = False
  Worksheets(1).Delete
  Application.DisplayAlerts = True
  msg = "保護されているシートは存在しません。"
 Else
  msg = "保護されているシート名一覧を、【" & _
    Worksheets(1).Name & _
    "】に作成しました。"
 End If

 MsgBox msg

End Sub

上記のマクロを実行すると、アクティブなブックに保護されたシートが存在しているときに、先頭に追加したワークシートに、保護されているシート名が書き出されます。

メインの処理は、For Each ~ Nextループ文のところです。

ProtectContentsプロパティを調べれば、シートが保護されているかどうかがわかりますので、For Each ~ Nextループ文の中で、Sheetsコレクションオブジェクトを順番に調べていき、ProtectContentsプロパティがTrueのときに、
  If sh.ProtectContents Then
   Worksheets(1).Cells(i, 1).Value = sh.Name
シート名を書き出しています。

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Sheets・Worksheet » 保護されているシート名を一覧にするマクロ

「Sheets・Worksheet」の記事一覧

検索


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

.