Home » WSH・Windows Script Hostの使い方 » Excelの全シートを表示するVBScript

Windows Scripting Host, VBScript

このサイト・インストラクターのネタ帳のアクセスログを眺めていて、
「vbs エクセルシート全表示」
という検索キーワードで、アクセスがあることに気づきました。

Excelのシートをすべて再表示させるVBScriptを探していらしたのでしょうか。

[スポンサードリンク]

Excelの全シートを再表示するサンプルスクリプト

以下のようなスクリプトで、指定したExcelファイルの全シートを再表示できます。

Option Explicit
'-- 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.Save
 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を利用しています。

[スポンサードリンク]

Home » WSH・Windows Script Hostの使い方 » Excelの全シートを表示するVBScript

「WSH・Windows Script Hostの使い方」の記事一覧

検索


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

.