【EXCEL VBA】ワークシート(自分自身)を、新規ワークブックにコピーするサンプル

VBA・Officeカテゴリを表すパンダのイラスト VBA・Office

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の制御: シート削除時の確認ダイアログを一時的に非表示にすることで、処理が中断しないようにしています。

使い方

  1. Excelファイルを開き、Alt + F11 キーを押してVBE(Visual Basic Editor)を開きます。
  2. プロジェクトエクスプローラーから、コピー元にしたいシートのモジュール(例: 「Sheet1」など)を選択してダブルクリックします。
  3. 上記コードを貼り付けます。
  4. エディタ上またはExcelシート上のマクロ実行から CopyToNWorkbook を実行します。

この記事の更新履歴

この記事は、生成AIを活用した自動レビュー・更新フローにより内容を見直し、必要な修正を反映しています。

2026年9月12日

  • 変更ブロック引用タグで記述されていたVBAコードを、正しく読みやすいコードブロック形式に修正しました。
  • 追加マクロの実行手順、前提条件、および処理内容の解説を追加しました。

文書情報

記事タイトル
【EXCEL VBA】ワークシート(自分自身)を、新規ワークブックにコピーするサンプル
作成日
更新日
Source URL
https://papanda925.com/?p=443

ライセンス: 本記事のうち、当サイトが権利を有する本文・自作図表は、特記なき限り CC BY 4.0 で利用できます。生成AIを活用して作成・編集した内容を含みます。コードについて、別途ライセンス表示またはリンク先GitHubリポジトリのライセンスがある場合は、その条件を優先します。引用・第三者資料・画像・商標等は本ライセンスの対象外です。 利用ポリシー

タイトルとURLをコピーしました