このサイト・インストラクターのネタ帳のアクセスログを眺めていて、
「vbs エクセルシート全表示」
という検索キーワードで、アクセスがあることに気づきました。
Excelのシートをすべて再表示させるVBScriptを探していらしたのでしょうか。
Excelの全シートを再表示するサンプルスクリプト
以下のようなスクリプトで、指定したExcelファイルの全シートを再表示できます。
'-- main begin ----
Dim args
Set args = Wscript.Arguments
If args.Count < 1 Then
MsgBox "全シートを表示したいExcelファイルを、ドラッグ&ドロップしてください。"
Wscript.Quit
End If
Private xls
Set xls = CreateObject("Excel.Application")
xls.Visible = False
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
Dim f_path ' ファイルのフルパス
For Each f_path in args
Select Case UCase(fso.GetExtensionName(f_path))
Case "XLS", "XLSX", "XLSM", "XLSB"
Call showAllSheets(f_path)
Case Else
MsgBox fso.GetFileName(f_path) & "はExcelファイルではありません。"
End Select
Next
Set fso = Nothing
xls.Quit
Set xls = Nothing
MsgBox "スクリプトが終了しました。"
'-- main end ----
Private Sub showAllSheets(ByVal bk_path)
Dim bk
Set bk = xls.Workbooks.Open(bk_path)
Dim sh
For Each sh In bk.Sheets
sh.Visible = True
Next
bk.Close
Set bk = Nothing
End Sub
上記のスクリプトを拡張子「.vbs」で保存して、シートを再表示したいExcelファイルをドラッグアンドドロップしてください。
サンプルスクリプトで行っている処理
まず、Excel.ApplicationオブジェクトをCreateObjectして、Excelを非表示状態のままにし、
Private xls
Set xls = CreateObject("Excel.Application")
xls.Visible = False
FileSystemObjectオブジェクトもCreateObjectします。
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
つづいて、ドラッグアンドドロップされた全ファイルをFor Each~Nextループで処理を開始し、
Dim f_path
For Each f_path in args
拡張子が「XLS」「XLSX」「XLSM」「XLSB」だったときに、全シートを表示するSubプロシージャを呼んでいます。
Select Case UCase(fso.GetExtensionName(f_path))
Case "XLS", "XLSX", "XLSM", "XLSB"
Call showAllSheets(f_path)
全シートを表示するプロシージャでは、引数で指定されたブックを、
Private Sub showAllSheets(ByVal bk_path)
Workbooks.Openメソッドで開いて、
Dim bk
Set bk = xls.Workbooks.Open(bk_path)
全シートにFor Each~Nextループを回して、
Dim sh
For Each sh In bk.Sheets
順番にシートの表示を行い、
sh.Visible = True
For Each~Nextループを抜けたら、上書き保存して閉じています。
Next
bk.Save
bk.Close
ドラッグアンドドロップされたファイルの拡張子を取得するステートメントと、
Select Case UCase(fso.GetExtensionName(f_path))
ファイル名を取得するステートメントで、
MsgBox fso.GetFileName(f_path) & "はExcelファイルではありません。"
FileSystemObjectオブジェクトのメソッド・GetExtensionNameとGetFileNameを利用しています。
- Newer:VBAでスライドマスターの最背面Shape色を変更する
- Older:VBAのステートメントとは
Home » WSH・Windows Script Hostの使い方 » Excelの全シートを表示するVBScript