【Excel VBA】既存のシートから新しいブックを作成する3つの方法

完成したレポートシートだけをメールで送りたい、あるいは特定の複数シートだけをまとめて別ファイルとして保存したい、といった場面はよくあります。

VBAの.Copy.Moveメソッドを使えば、シートを新しいブックに切り出す操作を簡単に行えます。この記事では、既存のシートを基に新しいExcelファイルを作成する、実用的な3つの方法を解説します。


目次

1. 1枚のシートをコピーして新規ブックを作成する(基本)

最も一般的なのが、特定のシート1枚だけを新しいブックにコピーする方法です。

コードと解説

Sub CreateNewBookFromSingleSheet()

    ' コピーしたいシートを準備
    Dim sourceSheet As Worksheet
    Set sourceSheet = ThisWorkbook.Worksheets("月次レポート")

    ' --- 1. シートをコピー ---
    ' .Copyメソッドの引数を省略すると、新しいブックが自動で作られます
    sourceSheet.Copy

    ' --- 2. 新しく作られたブックを保存 ---
    ' コピー直後は、新しく作られたブックがアクティブになっています
    ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & sourceSheet.Name & "_単体.xlsx"
    
    ' 不要であれば、保存後に閉じる
    ' ActiveWorkbook.Close

    MsgBox "「" & sourceSheet.Name & "」シートから新しいブックを作成しました。"

End Sub

Worksheetオブジェクトの.Copyメソッドは、BeforeAfterといった位置を指定する引数を省略すると、コピーしたシートだけを含む新しいブックを自動的に作成します。

コピーが実行された直後は、その新しく作成されたブックがアクティブな状態(ActiveWorkbook)になるため、すぐにSaveAsメソッドで名前を付けて保存することができます。


2. 複数のシートをまとめて新規ブックにコピーする

複数のシートを一度に新しいブックへまとめることも可能です。Array関数を使って、コピーしたいシート名を列挙します。

コードと解説

Sub CreateNewBookFromMultipleSheets()

    ' --- 1. 複数のシートを名前で指定してコピー ---
    ' Array関数の中に、コピーしたいシート名をカンマ区切りで記述します
    ThisWorkbook.Worksheets(Array("サマリー", "データ詳細", "グラフ")).Copy

    ' --- 2. 新しく作られたブックを保存 ---
    ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\複数シートまとめ.xlsx"

    MsgBox "3枚のシートから新しいブックを作成しました。"

End Sub

Worksheetsコレクションにシート名の配列を渡すことで、指定されたシートがすべてコピーされた新しいブックが作成されます。シートの順番は、配列で指定した順番になります。


3. シートを「移動」して新規ブックを作成する

.Copyメソッドとの大きな違いは、.Moveメソッドが元のブックからシートを**完全に移動(削除)**させる点です。

コードと解説

Sub CreateNewBookByMovingSheet()

    ' 移動したいシート(この操作の後、元のブックからなくなります)
    Dim sheetToMove As Worksheet
    Set sheetToMove = ThisWorkbook.Worksheets("アーカイブデータ")

    ' --- 1. シートを移動 ---
    ' .Moveメソッドも引数を省略すると、新しいブックが作られます
    sheetToMove.Move
    
    ' --- 2. 新しく作られたブックを保存 ---
    ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & sheetToMove.Name & "_移動ファイル.xlsx"
    
    MsgBox "「" & sheetToMove.Name & "」シートを新しいブックに移動しました。"

End Sub

.Moveメソッドも.Copyと同様に、引数を省略するとそのシートだけを含む新しいブックを作成します。ただし、実行後に元のブックからそのシートはなくなります。 アーカイブ化など、シートを完全に分離させたい場合に利用します。


まとめ:3つの方法の使い分け

方法構文元のシートの処遇主な用途
単一シートコピーWorksheets("名前").Copy残る特定のシートだけを別ファイルで共有したい時。
複数シートコピーWorksheets(Array(...)).Copy残る関連する複数シートをセットで配布したい時。
シート移動Worksheets("名前").Moveなくなるシートを元のブックから完全に切り離し、アーカイブ化したい時。

これらのメソッドを使い分けることで、VBAによるファイル作成や整理の自動化が、より柔軟に行えるようになります。

副業から独立まで「稼げる」Webスキルを習得する(PR)

ここまで読んでいただきありがとうございます。 最後に宣伝をさせてください。

「副業を始めたいが、何から手をつければいいかわからない」「独学でスキルはついたが、収益化できていない」という悩みを持つ方には、マンツーマン指導のWebスクール**「メイカラ」**が適しています。

このスクールは、単に技術を教えるだけでなく、**「副業として具体的にどう稼ぐか」**という実務直結のノウハウ提供に特化している点が特徴です。

講師陣は、実際に「副業Webライターから1年で独立して月収100万円」を達成したプロや、現役で利益を出し続けているブロガーなど、確かな実績を持つプレイヤーのみで構成されています。そのため、机上の空論ではない、現場で通用する戦術を学ぶことができます。

副業に特化した強み

  • 最短ルートの提示: 未経験からでも実績を出せるよう、マンツーマンで指導。
  • AI活用の習得: 副業の時間対効果を最大化するための、正しいAI活用スキルも網羅。
  • 案件獲得のチャンス: 運営がWebマーケティング会社であるため、実力次第で社内案件の紹介など、仕事に直結する可能性があります。

受講者の多くは、「在宅でできる仕事を探している」「副業を頑張りたい」という20代・30代・40代が中心です。

受講前には、講師による無料説明が行われます。無理な勧誘はなく、自分に合った副業スタイルやプランを相談できるため、まずは話を聞いてみることから始めてみてはいかがでしょうか。

ブログで稼ぎたいなら「メイカラ」

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次