Excelでは、手動でもシートをドラッグして他のブックにコピーや移動ができますが、VBAを使うとこれを自動化できます。
コピーと移動では動作が異なるため、用途に応じて使い分けましょう。
1. シートを別ブックへコピーする
Sub CopySheetToAnotherWorkbook()
Dim srcWb As Workbook
Dim destWb As Workbook
Dim filePath As String
'コピー先ブックのパス
filePath = "C:\Test\Dest.xlsx"
'コピー元ブックを指定
Set srcWb = ThisWorkbook
'コピー先ブックを開く
Set destWb = Workbooks.Open(filePath)
'シートをコピー(末尾に追加)
srcWb.Sheets("Sheet1").Copy After:=destWb.Sheets(destWb.Sheets.Count)
'保存して閉じる
destWb.Save
destWb.Close
End Sub
解説:
.Copy
… コピーしたシートを指定先に追加After:=destWb.Sheets(destWb.Sheets.Count)
… コピー先ブックの一番後ろに挿入- コピー元ブックは閉じずにそのまま残る
2. シートを別ブックへ移動する
Sub MoveSheetToAnotherWorkbook()
Dim srcWb As Workbook
Dim destWb As Workbook
Dim filePath As String
filePath = "C:\Test\Dest.xlsx"
Set srcWb = ThisWorkbook
Set destWb = Workbooks.Open(filePath)
'シートを移動(末尾へ)
srcWb.Sheets("Sheet1").Move After:=destWb.Sheets(destWb.Sheets.Count)
'保存して閉じる
destWb.Save
destWb.Close
End Sub
解説:
.Move
… シートを移動(コピー元からは削除される)- データを残したい場合は
.Copy
を使うべき
3. 新規ブックにコピーする
Sub CopySheetToNewWorkbook()
ThisWorkbook.Sheets("Sheet1").Copy
End Sub
解説:
.Copy
だけで、新しいブックが自動的に作成される- 作成後に
ActiveWorkbook.SaveAs
で保存可能
4. 注意点
- コピーや移動の際、シート名が重複しているとエラーになる
- 移動の場合は元のブックからシートが削除されるため、必要に応じてバックアップを取る
- コピー先ブックを閉じる前に必ず保存するようにする
コメント