Excel VBAで現在アクティブなワークシート(自分自身)を新規ワークブックにコピーし、名前を付けて保存するサンプルコードと解説です。
作業中のシートだけを切り出して別ファイルとして保存したい場合に便利なマクロです。
前提条件
- ExcelがインストールされているWindows環境(Macの場合はパス区切り文字の調整が必要です)。
- マクロを有効にしたワークブック(.xlsm)での実行を前提としています。
サンプルコード
' 自分自身(ワークシート)を別ワークブックにコピーして保存するマクロ
Sub CopyToNWorkbook()
' 一時保存用ワークブック変数
Dim tmpWb As Workbook
' シート削除時などの警告メッセージを抑制
Application.DisplayAlerts = False
' 新規ワークブックを作成し、自分自身のシートをその先頭にコピー
Set tmpWb = Workbooks.Add
Me.Copy tmpWb.Sheets(1)
' 新規ワークブック作成時にデフォルトで含まれる不要なシートを削除
Dim ws As Worksheet
For Each ws In tmpWb.Sheets
If ws.Name = "Sheet1" Or ws.Name = "Sheet2" Or ws.Name = "Sheet3" Then
ws.Delete
End If
Next ws
' コピーした新規ワークブックを、元ファイルと同じ場所に名前を付けて保存
tmpWb.SaveAs ThisWorkbook.Path & "\test_" & Me.Name & ".xlsx"
' 後処理(ワークブックを閉じ、アラート表示を元に戻す)
tmpWb.Close SaveChanges:=True
Application.DisplayAlerts = True
MsgBox "新規ワークブックへのコピーと保存が完了しました。", vbInformation
End Sub
コードのポイント
- Meキーワードの使用: このコードはシートモジュール(Sheet1など)に記述することを想定しており、
Meを使うことで現在操作しているワークシートを直接指定できます。 - 不要シートの削除: Excelのバージョンや設定によって新規作成時のデフォルトシート数が異なるため、判定して削除しています。
- DisplayAlertsの制御: シート削除時の確認ダイアログを一時的に非表示にすることで、処理が中断しないようにしています。
使い方
- Excelファイルを開き、
Alt + F11キーを押してVBE(Visual Basic Editor)を開きます。 - プロジェクトエクスプローラーから、コピー元にしたいシートのモジュール(例: 「Sheet1」など)を選択してダブルクリックします。
- 上記コードを貼り付けます。
- エディタ上またはExcelシート上のマクロ実行から
CopyToNWorkbookを実行します。
この記事の更新履歴
この記事は、生成AIを活用した自動レビュー・更新フローにより内容を見直し、必要な修正を反映しています。
2026年9月12日
- 変更ブロック引用タグで記述されていたVBAコードを、正しく読みやすいコードブロック形式に修正しました。
- 追加マクロの実行手順、前提条件、および処理内容の解説を追加しました。

