Excel VBAでシートコピー(新規ブックにコピーし、名前を付けて保存)は、既存のシートを新しいブックにコピーして、その新しいブックに名前を付けて保存する操作を指します。この操作を行えば、特定のシートだけを別のファイルとして保存できます。具体的な使い方や、注意点やサンプルコードを紹介します。
基本的な文法やVBAの実践的な応用までを網羅的に学習できる方法は、ExcelVBAエキスパート資格の取得を目指すこと。学習を通して、より効率的に、着実に基礎を身につけることが可能です。資格取得すれば、スキルの証明にもなり、職場での評価アップにも繋がるため、勉強を進めるモチベーションにもなります。
本サイト参考:マクロ知識がないから「何から学べば良いのかわからない」という人におすすめの記事
目次
Excel VBAでシートを新しいブックにコピーするシーンとメリット
特定のシートを新しいブックにコピーする操作は、データ管理や分割作業で非常に便利です。
Excel VBA シートコピー(新規ブックにコピーし、名前を付けて保存)の利用
以下のようなシーンで利用されます。
・完成したレポートを他のユーザーに送信するために、そのシートだけを新規ブックとして保存。
・特定のシートをテンプレートとして別ファイルに保存し、他の人が使用できるようにする。
メリット
部門ごとにレポートを作成する際に役立ちます。一度の操作で必要なシートだけを切り分け、新しいブックとして保存することで、管理が簡単になります。
手作業でコピー&ペーストを繰り返す必要がなくなり、業務効率が飛躍的に向上します。特に大量のデータを扱う場合、数分で作業が完了するため、他のタスクに時間を割くことができます。
Excel VBAでシートを新しいブックにコピーする|使い方
1.コピー元のシートを新しいブックにコピーします。
2.コピーされたシートを含む新しいブックに名前を付けて保存します。
・Workbooks.Add
新しいブックを作成するメソッド
・Copy
シートをコピーし、新しいブックの最初の位置に配置します
・SaveAs
新しいブックを指定した場所に保存します
・Close
保存後にブックを閉じます。
・ファイル名の衝突回避
保存時に同じ名前のファイルが存在しないように注意し、必要に応じてファイル名を変更する。
・データの完全性
コピーするシートが他のシートやデータに依存していないか確認し、必要なデータが全て含まれていることを確認する。
Excel 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
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
保存後にブックを閉じます。
複数シートをまとめてコピー
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
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
新しいブックを閉じます。
この操作を使うことで、特定のシートを別のファイルとして簡単に保存し、他のユーザーと共有することができます。保存時にはファイル名の重複に注意し、他のシートやデータとの依存関係を確認してから実行することが重要です。
Excel VBAで自動化するコードのベースを習得したい方におすすめ!
VBAエキスパート資格は、日常業務でExcelを多用し、手動作業を減らしたいと考えている方には価値あるものです。
ExcelVBAエキスパートベーシック
仕事の効率をあげるためにExcelVBAを利用する人が対象の問題集です。
ExcelVBAエキスパートスタンダード
ExcelVBAの開発を仕事にする人が対象の問題集です。
Excel VBA エキスパート資格について知りたい方は、下記「Excel VBAスキルアップを目指すなら知っておきたいVBAエキスパート」をご確認ください。