【VBA】非表示シートを配列を使って高速に別ブックとして保存する方法
手作業で大量の非表示シートを個々に開き、別のファイルへ移動するのは労力がかかります。この記事では、配列を使用して高速に非表示シートを一括処理し、別のExcelブックとして保存する方法を紹介します。
サンプルコード
VBA
Option Explicit
Sub SaveHiddenSheetsAsSeparateWorkbook()
Dim wb As Workbook, ws As Worksheet
Dim hiddenWsArray() As Variant
Dim i As Long, lastRow As Long
' 非表示シートの配列を作成
ReDim hiddenWsArray(1 To ThisWorkbook.Sheets.Count)
For i = 1 To ThisWorkbook.Sheets.Count
If ThisWorkbook.Sheets(i).Visible = xlSheetHidden Or ThisWorkbook.Sheets(i).Visible = xlSheetVeryHidden Then
Set hiddenWsArray(i) = ThisWorkbook.Sheets(i)
End If
Next i
' 配列のサイズを確定
ReDim Preserve hiddenWsArray(1 To i - 1)
' 新しいワークブックを作成
Set wb = Workbooks.Add(xlWBATWorksheet)
Application.ScreenUpdating = False
For i = LBound(hiddenWsArray) To UBound(hiddenWsArray)
hiddenWsArray(i).Copy After:=wb.Sheets(wb.Sheets.Count)
wb.Sheets(wb.Sheets.Count).Name = hiddenWsArray(i).Name
Next i
' 元のワークブックに戻る
Application.ScreenUpdating = True
End Subよくある質問
Q 元に戻せますか?
A.
VBAの実行結果は「元に戻す」が効きません。必ずバックアップを取ってから実行してください。
Q エラーが出たら?
A.
シート名や列番号が正しいか確認してください。