' この処理はアクティブブックの全シート名を配列に格納し、新規ブックにまとめてコピーします。
' その後、新規ブックをマクロなしのファイルとして保存します。
Sub prcCopySheetsToNewWorkbookAndSave()
Dim wbkSource As Workbook ' 元のワークブック
Dim wbkNew As Workbook ' 新しいワークブック
Dim arrSheets() As String ' シート名を格納する配列
Dim intSheetCount As Integer ' シートの総数
Dim i As Integer ' ループカウンタ
Dim strNewPath As String ' 新しいファイルのパス
Dim fso As FileSystemObject
Set wbkSource = ActiveWorkbook
Set fso = New FileSystemObject
intSheetCount = wbkSource.Sheets.Count
ReDim arrSheets(1 To intSheetCount)
' シート名を配列に格納
For i = 1 To intSheetCount
arrSheets(i) = wbkSource.Sheets(i).Name
Next i
' 新規ブックを作成し、シートをまとめてコピー
Set wbkNew = Workbooks.Add
wbkSource.Sheets(arrSheets).Copy Before:=wbkNew.Sheets(1)
' 最初に自動で作成されるシートを削除
Application.DisplayAlerts = False
wbkNew.Sheets(1).Delete
Application.DisplayAlerts = True
' 新しいファイルのパスを設定
strNewPath = fso.GetParentFolderName(wbkSource.FullName) & "\" & fso.GetBaseName(wbkSource.FullName) & ".xlsx"
' マクロなしの形式で保存
wbkNew.SaveAs Filename:=strNewPath, FileFormat:=xlOpenXMLWorkbook
wbkNew.Close
Set fso = Nothing
MsgBox "終了"
End Sub
コメント