2010/05/03

Excelのシートをまとめて再表示する

たぶん前の担当者が残したと思うんだけど、勤務先に使えるVBScriptファイルがあったのでメモ。

If WScript.Arguments.Count = 0 Then
    MsgBox "Excelの非表示シートをまとめて表示するVBScriptです。" & _
    vbCrLf & "ファイルをドロップして使用してください。", , "説明"
    WScript.Quit
End If

On Error Resume Next

For Each myFName In WScript.Arguments
    If LCase(Right(myFName, 3)) = "xls" Then
        Set myXLS = CreateObject("Excel.Application")
        myXLS.Visible = True
        Set myBK = myXLS.Workbooks.Open(myFName)
        For Each mySH In myBK.Sheets
            mySH.Visible = True
        Next
        Set myBK = Nothing
        Set myXLS = Nothing
    End If
Next

If Err.Number <> 0 Then
    MsgBox "ブックの保護を解除して試してください。", , "エラー"
End If

↑のコードをテキストにコピーしてデスクトップ等に保存すればOK。(拡張子は .vbs)使い方はカンタンで非表示シートがあるExcelファイルをドラッグ&ドロップすれば、シートが一括で再表示されます。

同じ動作のVBAサンプルは↓

' サンプル(1) '
Sub SheetVisibleSample1()

Dim xSh As Worksheet

For Each xSh In Worksheets
    xSh.Visible = xlSheetVisible
Next

End Sub
' サンプル(2) '
Sub SheetVisibleSample2()

Dim i As Integer

For i = 1 To ThisWorkbook.Sheets.Count
    Worksheets(i).Visible = xlSheetVisible
Next

End Sub
' サンプル(3) '
Sub SheetVisibleSample3()

Dim xSh As Worksheet
Dim xPass As String

On Error GoTo ErrorTrap
Call SheetVisibleSample1

ErrorTrap:
    xPass = InputBox("ブック保護のパスワードを入力してください。", "確認", "")
    ActiveWorkbook.Unprotect Password:=xPass
    Call SheetVisibleSample1

End Sub

サンプル(1)と(2)はエラー処理をしていないので、ブックが保護されたファイルで実行すると、『実行時エラー '1004' :WorksheetクラスのVisibleプロパティを設定できません。』が発生します。

サンプル(3)は、エラートラップとしてパスワードの入力ダイアログを表示させています。ブック保護されていてもダイアログに正しいパスワードを入力すればシートを一括で再表示できます。ただ、入力ミスを繰り返すと、やはり『実行時エラー '1004'』が発生するので、もう少しエラー処理を考える必要がありますがこれくらいにして、Visibleプロパティに指定できる値をメモして今日は終了。

  • xlSheetVisible(True):ワークシートを表示します。
  • xlSheetHidden(False):ワークシートを非表示にします。メニューバーから再表示可。
  • xlSheetVeryHidden:ワークシートを非表示にします。メニューバーから再表示不可。

"xlSheetHidden(False)"で非表示にしたシートはメニューバーから再表示できますが、"xlSheetVeryHidden"で非表示にしたシートは、メニューバーからは再表示できなくなるので、VBAで再表示させる必要があります。

0 件のコメント:

コメントを投稿