複数のワークシートがタブごとに分けられてるブックで
それぞれのワークシートをコピーして分割して
新しいブックとして保存するマクロ
コード
Sub 各ワークシートをコピーして新しいブックに保存する() Dim SourceWorkbook As Workbook Dim SourceWorksheet As Worksheet Dim NewWorkbook As Workbook Dim Path As String ' ソースとなるワークブックを指定 Set SourceWorkbook = ThisWorkbook 'パスを取得 Path = ThisWorkbook.Path ' 確認ダイアログを表示しないように設定 Application.DisplayAlerts = False ' 各ワークシートをコピーして新しいブックを作成 For Each SourceWorksheet In SourceWorkbook.Sheets ' 新しいブックを作成 Set NewWorkbook = Workbooks.Add ' コピー元ワークシートをコピー先ブックにコピー SourceWorksheet.Copy Before:=NewWorkbook.Sheets(1) ' 新しいブックのsheet1を削除 NewWorkbook.Sheets("Sheet1").Delete ' 新しいブックを保存 NewWorkbook.SaveAs Path & "\" & SourceWorksheet.Name & ".xlsx" NewWorkbook.Close SaveChanges:=False ' オブジェクトの解放 Set NewWorkbook = Nothing Next SourceWorksheet ' 確認ダイアログの設定を元に戻す Application.DisplayAlerts = True MsgBox "完了" End Sub
注意点
- マクロが入ってるフォルダと同じフォルダに新しいブックができる
課題
新しいブックを作って、そこにワークシートをコピーしているが、新しいブックにもともとあったsheet1が残るので、削除するコードを入れている。
手作業と同じように、任意のシートだけをコピーして新しいブックに保存する方法(sheet1の削除が不要)はないのか模索する。
sacu.sacu-ri.com