Excel VBA シートを新規ブックにコピーして名前を付けて保存する実践例

 

Excel VBAでシートコピー(新規ブックにコピーし、名前を付けて保存)は、既存のシートを新しいブックにコピーして、その新しいブックに名前を付けて保存する操作を指します。この操作を行えば、特定のシートだけを別のファイルとして保存できます。具体的な使い方や、注意点やサンプルコードを紹介します。

 

「VBAスキルを証明できれば、社内評価アップにつながるかもしれません
👉 VBAを学んで社内評価を上げる方法はこちら

 

 

Excel VBAでシートを新しいブックにコピーするシーンとメリット

特定のシートを新しいブックにコピーする操作は、データ管理や分割作業で非常に便利です。

 

Excel VBA シートコピー(新規ブックにコピーし、名前を付けて保存)の利用

以下のようなシーンで利用されます。

・完成したレポートを他のユーザーに送信するために、そのシートだけを新規ブックとして保存。

・特定のシートをテンプレートとして別ファイルに保存し、他の人が使用できるようにする。

 

メリット

部門ごとにレポートを作成する際に役立ちます。一度の操作で必要なシートだけを切り分け、新しいブックとして保存することで、管理が簡単になります。

手作業でコピー&ペーストを繰り返す必要がなくなり、業務効率が飛躍的に向上します。特に大量のデータを扱う場合、数分で作業が完了するため、他のタスクに時間を割くことができます。

 

Excel VBAでシートを新しいブックにコピーする|使い方

使い方

1.コピー元のシートを新しいブックにコピーします。

2.コピーされたシートを含む新しいブックに名前を付けて保存します。

・Workbooks.Add
新しいブックを作成するメソッド

・Copy
シートをコピーし、新しいブックの最初の位置に配置します

・SaveAs
新しいブックを指定した場所に保存します

・Close
保存後にブックを閉じます。

 

ポイント

・ファイル名の衝突回避
保存時に同じ名前のファイルが存在しないように注意し、必要に応じてファイル名を変更する。

・データの完全性
コピーするシートが他のシートやデータに依存していないか確認し、必要なデータが全て含まれていることを確認する。

 

Excel VBA シートコピーのサンプルコード

 

「VBAスキルを証明できれば、社内評価アップにつながるかもしれません
👉 VBAを学んで社内評価を上げる方法はこちら

 

 

Workbooks.Addメソッドで新しいブックを作成

Option Explicit

Sub CopyMultipleSheets()
    Dim newBook As Workbook
    Set newBook = Workbooks.Add
End Sub

 

Workbooks.Add
新しいブックを作成するメソッド。

Set newBook
新しく作成したブックを`newBook`変数に代入します。

コピー元のシートを指定して、新しいブックに移します。

Option Explicit

Sub CopyMultipleSheets()
    Dim newBook As Workbook
    Set newBook = Workbooks.Add
    Dim sheetToCopy As Worksheet
    Set sheetToCopy = ThisWorkbook.Sheets("Sheet1")
    
    sheetToCopy.Copy Before:=newBook.Sheets(1)
End Sub

 

このコード、「なんとなくコピペ」で済ませていませんか?

構文は知っていても、
「Workbook と Worksheet の扱いがよく分からない」──
そんなモヤモヤを感じたことがある方へ。

“今の自分のVBAスキル”を、点数で見える形にしてみませんか?

※この教材は「試験対策」も「実力診断」も、どちらにも対応しています。

 

ThisWorkbook.Sheets("Sheet1")
コピーしたいシートを指定

Copy
シートをコピーし、新しいブックの最初の位置に配置します。

新しいブックを保存して作業を終了します。

Option Explicit

Sub CopyMultipleSheets()
    Dim newBook As Workbook
    Set newBook = Workbooks.Add
    Dim sheetToCopy As Worksheet
    Set sheetToCopy = ThisWorkbook.Sheets("Sheet1")
    
    sheetToCopy.Copy Before:=newBook.Sheets(1)
    newBook.SaveAs "C:\Users\User\Desktop\Test\新しいファイル.xlsx"
    newBook.Close
End Sub

SaveAs
新しいブックを指定した場所に保存します。

Close
保存後にブックを閉じます。

2025年解消したい。「毎日、時間に追われて余裕がない…そんなあなたへ」
👉クリックして、もっと効率的に作業する方法の詳細はこちら

複数シートをまとめてコピー

Option Explicit

Sub CopyMultipleSheets()
    Dim newBook As Workbook
    Dim sheetArray As Variant

    ' コピーするシートの名前を配列で指定
    sheetArray = Array("Sheet1", "Sheet2", "Sheet3")

    ' 新しいブックを作成
    Set newBook = Workbooks.Add

    ' シートをコピー
    ThisWorkbook.Sheets(sheetArray).Copy Before:=newBook.Sheets(1)

    ' 新しいブックを保存
    newBook.SaveAs "C:\Users\User\Desktop\Test\新しいファイル.xlsx"
    newBook.Close
End Sub

「業務改善を進めたいけれど、何から始めたらいいのかわからない…」とお困りの皆様。時間を有効活用したいが、
その方法に戸惑っていませんか?

本サイト参考:Excelマクロを活用することで、業務課題の解決方法について知りたい!おすすめの記事

Array
複数のシート名をリスト形式で指定

Sheets(sheetArray).Copy
指定したシートを一括でコピー

新規ブックにコピー、名前を付けて保存

Option Explicit

Sub CopySheetToNewBookAndSave()
    Dim wsSource As Worksheet
    Dim newBook As Workbook
    Dim filePath As String
    
    ' コピー元のシートを指定
    Set wsSource = ThisWorkbook.Sheets("Sheet1")
    
    ' シートを新しいブックにコピー
    wsSource.Copy
    
    ' コピーされたシートがアクティブな新しいブックになる
    Set newBook = ActiveWorkbook
    
    ' 保存先のパスを指定
    filePath = "C:\Users\User\Desktop\NewWorkbook.xlsx"
    
    ' 新しいブックを保存
    newBook.SaveAs filePath
    
    ' 新しいブックを閉じる
    newBook.Close
    
    ' 完了メッセージ
    MsgBox "シートが新規ブックにコピーされ、保存されました!"
End Sub

マクロができる人が少ない職場
数年後にはあなたより効率的な後輩にポジションを奪われるかもしれません。
👉 詳細はこちら

・wsSource.Copy
指定したシートを新しいブックにコピーします。この操作によって、自動的に新しいブックが作成されます。

・filePath
変数に保存先のファイルパスを指定します。このパスには、ファイル名と拡張子(`.xlsx`)を含める必要があります。

・newBook.SaveAs filePath
新しく作成されたブックを指定したパスに保存します。

・newBook.Close
新しいブックを閉じます。

この操作を使うことで、特定のシートを別のファイルとして簡単に保存し、他のユーザーと共有することができます。保存時にはファイル名の重複に注意し、他のシートやデータとの依存関係を確認してから実行することが重要です。

「できてるはず」──そう思っていても、
「このやり方、本当に正しいのかな…?」と感じたことはありませんか?

VBAを実務で使いこなしているあなたへ。

“今の自分のVBAスキル”を、点数で見える形にしてみませんか?

※この教材は「試験対策」も「実力診断」も、どちらにも対応しています。