完成したレポートシートだけをメールで送りたい、あるいは特定の複数シートだけをまとめて別ファイルとして保存したい、といった場面はよくあります。
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メソッドは、BeforeやAfterといった位置を指定する引数を省略すると、コピーしたシートだけを含む新しいブックを自動的に作成します。
コピーが実行された直後は、その新しく作成されたブックがアクティブな状態(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代が中心です。
受講前には、講師による無料説明が行われます。無理な勧誘はなく、自分に合った副業スタイルやプランを相談できるため、まずは話を聞いてみることから始めてみてはいかがでしょうか。
