EXCEL VBA 選択シートの新規ブックへ保存・全シートを新規に別々のブックへ保存(テクニック)
EXCEL VBA 選択シートの新規ブックへ保存・全シートを新規ブックへ保存(テクニック)
今回説明するのは、選択したシートを別のブックとして新規保存する方法や、ブック内にある指定した文字列に該当するワークシート名を別々のブックとして保存するサンプルプログラムです。EXCELブックを一時的に仮保存する場合に、通常ブックを丸ごとコピーしますが、今回のプログラムでは、部分的に指定したシートのみを別ブックとして保存する方法を説明たします。別ブックとして保存する事で、現時点の途中結果として履歴管理としても保存する事ができます。それでは、サンプルプログラムを交えて説明いたします。
●【EXCEL VBA EXCELファイル・ワークブック・アクティブシートの保存・上書き保存・選択保存 (SaveAs・GetSaveAsFilename)については、下記を参照して下さい】
EXCEL VBA EXCELファイル・ワークブック・アクティブシートの保存・上書き保存・選択保存 (SaveAs・GetSaveAsFilename)
EXCEL VBA 選択シート(アクティブシート)の新規ブックへ保存(指定したシートの保存)
下記のサンプルプログラムは、指定したアクティブシートの内容で新規ブックを作成して指定したシート名で保存するサンプルプログラムです。一時的に指定したシートを別ブックとして保存する時などに便利です。
【プログラム実行手順】
① 現在のアクティブシートに対してコピーを行います。
② 新しいブックを作成して、アクティブシート名でコピーした内容を貼り付けブック保存します。
③ 新しく作成したブックを閉じます。
★【サンプルプログラム】
下記のリンク先よりサンプルプログラムをダウンロードする事ができます。
● 別ブック01
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
' ' Sub SheetSave01() 'アクティブシートの新規ブック保存 Dim WS As Worksheet Set WS = ActiveSheet WS.Copy '現在表示されているアクティブシートをコピーします。 ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "" & WS.Name & ".xlsx" '新しいブックを作成してコピーしたシートをアクティブシート名でブック保存を行います。 ActiveWorkbook.Close False '新しく作成したブックを閉じる End Sub ' ' |
(画像クリックして拡大)
EXCEL VBA 入力したワークシート名に該当するシートを新規ブックとして作成しワークシート名ごと別々のブックで保存します。(入力した文字列に該当したシートの保存)
下記のサンプルプログラムは、入力した文字列に該当するワークシート名を新規ブックを作成して該当するワークシート名ごとに別々のブックに保存するサンプルプログラムです。ブックの中に複数のワークシートから該当するワークシートを別のブックとして保存する時に便利だと思います。
【プログラム実行手順】
① インプットボックスで別ブックへ保存するシート名を入力します。
② キャンセルまたは、何も入力しない場合は、プログラムを終了します。
③ ブック内の全ワークシートを順番に検索します。(該当するシート名か確認)
④ インプットボックスで入力したシート名に該当するシート名が一致した場合は、新規ブックを作成してシート内容をコピーして該当したシート名でブック保存します。
⑤ 新規作成したブックを閉じます。
⑥ ブック内の全ワークシートを検索するまで繰り返します。③へ
★【サンプルプログラム】
下記のリンク先よりサンプルプログラムをダウンロードする事ができます。
● 別ブック02
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
' '該当するシートを別ブックとして保存(.xlsx形式) Sub Sheets_save02() Dim WS As Worksheet Dim WsStr As String WsStr = InputBox("別ブックへ保管するシート名を入力") '別のブックへ保存するシート名でを入力します。 If WsStr = "" Then Exit Sub 'キャンセルまたは、何も入力しない場合は、プログラム終了 WsStr = "*" & WsStr & "*" For Each WS In Worksheets '全ワークシートを調べます。 If WS.Name Like WsStr Then '入力した文字列に該当するワークシートが判定します。 WS.Copy ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & ActiveSheet.Name & ".xlsx" '入力した文字列に該当するシートをコピーを行い、新規ブックをを作成して該当するシート名でブックを保存します。 ActiveWorkbook.Close False '新規作成したブックを閉じます。 End If Next WS End Sub ' ' |
別ブックとして作成され、該当するワークシート名ごとに別ブックとして保存されました。今回は、InputBoxで予算を入力をしたので、該当するワークシート名が2つ「予算2021年度・予算2022年度」が有るので、2つのブックファイルが作成されました。
(画像クリックして拡大)
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。