アクティブブックの全シートを一括出力全シート出力 2023.06.24
アクティブブックの全ワークシートを、それぞれ別のブックとして出力(保存)するマクロです。
別のブックとして保存するタイミングで数式を値に変換します。シートが保護されていると数式を値に変換できませんので、予めシートの保護は解除しておいてください。
また、出力先に同名のファイルがある場合は上書きしますので気を付けてください。
[値を変更しながら連続シート出力]はこちら
[複数のブックを一括統合]はこちら
【サンプルコード実行動画】 ※次の動画の氏名や住所はすべてダミーデータです
【お薦め】マクロ・プロシージャを管理する無料のツール!
Excelマクロ管理ツール
Excelマクロ管理ツール
サンプルコード2023.06.24
'----------------------------------------------------------------------------- ' アクティブブックの全シートを別ブックとして出力 '----------------------------------------------------------------------------- ' アクティブブックの全ワークシートを、それぞれ別のブックとして出力するマクロです。 ' 別のブックとして保存する際に数式を値に変換します。シートが保護されていると ' 数式を値に変換できませんので、予めシートの保護は解除しておいてください。 ' また、出力先に同名のファイルがある場合は上書きしますので気を付けてください。 '[作成日]2023.06.24 ' https://excel.syogyoumujou.com/vba/output_all_sheets.html '----------------------------------------------------------------------------- Sub OutputAllSheets() '定数 Const C_FILENAME As String = "Sample" '出力ファイルの基準名 'フォルダの選択 MsgBox "出力先のフォルダを選択してください", vbInformation Dim strFolderPath As String With Application.FileDialog(msoFileDialogFolderPicker) If .Show Then strFolderPath = .SelectedItems(1) Else Exit Sub End If End With 'フォルダ参照に区切り文字追加 strFolderPath = strFolderPath & Application.PathSeparator '画面更新停止・メッセージ非表示設定 Application.ScreenUpdating = False Application.DisplayAlerts = False Dim AWB As Workbook Dim NWB As Workbook Dim Sh As Worksheet Dim c As Long Dim bolProtect As Boolean Set AWB = ActiveWorkbook For Each Sh In AWB.Worksheets c = c + 1 '新規ブックにシートをコピー Sh.Copy '新規ブックを変数に設定 Set NWB = ActiveWorkbook 'シートが保護されていなければ数式を値に変換 With NWB.Worksheets(1) If .ProtectContents Then bolProtect = True Else .UsedRange.Value = .UsedRange.Value End If End With '基準名+番号をファイル名として新規ブックを保存 NWB.SaveAs strFolderPath & C_FILENAME & Format$(c, "000") & ".xlsx" '新規ブックを閉じる NWB.Close Next '画面更新設定・メッセージ表示設定 Application.DisplayAlerts = True Application.ScreenUpdating = True If bolProtect Then MsgBox "保護されているシートがありました" & vbLf & _ "そのシートは数式を値に変換できていません", _ vbExclamation End If 'フォルダを開く Call Shell("C:\Windows\Explorer.exe " & strFolderPath, vbNormalFocus) End Sub
ファイル名を変更する場合は定数を変更してください。
・「出力ファイル基準名」 出力するファイル名の基準です。ファイル名は「基準名+番号」です。
【書籍紹介】知りたいがすぐわかる! やりたいがすぐできる!
「Excel VBA 逆引きで学ぶ ユーザーフォーム&コントロール」(Kindle版)
ユーザーフォームを扱えると、VBAでできることが大きく広がります!
本書では、知りたいこと、やりたいことから、逆引きで学びを深められます。
140以上のサンプルファイル付き!