VBAを使うと、現在のシートを別のブックにコピーすることができます。
ここでは、既存ブックへのコピーと新規ブックへのコピーについて解説します。
1. 現在のシートを新しいブックにコピーする
最もシンプルな方法は、ActiveSheet.Copy
を単独で使用する方法です。
これを実行すると、現在のシートだけを含んだ新しいブックが作成されます。
Sub CopySheetToNewBook()
'現在のシートを新しいブックにコピー
ActiveSheet.Copy
End Sub
ポイント
- コピー後、新しいブックが自動的に開かれます。
- 新規ブックにはコピー元のシート名がそのまま使用されます。
2. 既存ブックにシートをコピーする
既存のブックにシートをコピーする場合は、コピー先のブックと位置を指定します。
たとえば、Book2.xlsx
の最後にコピーする場合は次のように記述します。
Sub CopySheetToExistingBook()
'既存ブックを変数にセット
Dim wb As Workbook
Set wb = Workbooks("Book2.xlsx")
'現在のシートを Book2.xlsx の最後にコピー
ActiveSheet.Copy After:=wb.Sheets(wb.Sheets.Count)
End Sub
注意点
- コピー先のブックが開いていないとエラーになります。
必要に応じてWorkbooks.Open "C:\Path\Book2.xlsx"
を使って開いておきましょう。
3. コピー時にシート名を変更する
コピーしたシートの名前が既に存在するとエラーになります。
そのため、コピー直後にリネームするのが安全です。
Sub CopyAndRenameToBook()
Dim wb As Workbook
Set wb = Workbooks("Book2.xlsx")
'シートをコピー
ActiveSheet.Copy After:=wb.Sheets(wb.Sheets.Count)
'コピーしたシートをリネーム
wb.Sheets(wb.Sheets.Count).Name = "コピーシート"
End Sub
4. まとめ
ActiveSheet.Copy
だけで新しいブックにコピー可能。- 既存ブックにコピーする場合は、
Workbooks("ブック名")
を指定。 - コピー後に
Name
プロパティでシート名を変更するとエラー回避しやすい。
コメント