はじめに
Excelで作業をしていると、
「元のシートを残したまま複製したい」
「テンプレートシートをコピーして使いたい」
そんな場面がよくあります。
VBAを使えば、シートを好きな位置にコピーしたり、
名前をつけたり、複数回コピーしたりと、柔軟に扱うことができます。
ここでは、シートをコピーする基本のコードと、そのしくみを解説します。
まずはコードを確認
Worksheets("Sheet1").Copy
もっともシンプルな書き方です。
この1行で、指定したシートを 新しいブックにコピー します。
コードのしくみを解説
同じブック内にコピーしたい場合
コピー先を指定すると、同じブック内で複製できます。
Worksheets("Sheet1").Copy After:=Worksheets("Sheet1")
- After を使うと、指定したシートの後ろにコピーされる
- Before を使うと、前にコピーされる
コピーしたシートに名前をつけたい場合
Worksheets("Sheet1").Copy After:=Worksheets("Sheet1")
ActiveSheet.Name = "Sheet1_コピー"
コピー直後は、そのシートがアクティブになります。
変数で受け取って操作したい場合
Dim ws As Worksheet
Worksheets("Sheet1").Copy After:=Worksheets("Sheet1")
Set ws = ActiveSheet
ws.Name = "レポート_コピー"
後続の処理がある場合は、変数に入れておくと扱いやすくなります。
あわせて知っておきたいポイント
最後尾にコピーしたい場合
Worksheets("Sheet1").Copy After:=Worksheets(Worksheets.Count)
シート数が多いブックでも、最後にコピーできます。
別のブックにコピーしたい場合
Worksheets("Sheet1").Copy After:=Workbooks("Book2.xlsx").Worksheets(1)
コピー先のブックを指定できます。
複数のシートをまとめてコピーしたい場合
Worksheets(Array("Sheet1", "Sheet2")).Copy After:=Worksheets("Sheet3")
複数シートを一度にコピーできます。
使うときに気をつけたいこと
- コピー直後はアクティブシートが変わります
→ 後続処理で ActiveSheet を使う場合は注意が必要です。
- 同じ名前のシートは作れません
→ コピー後に名前をつけるときは重複に注意しましょう。
- 保護されているシートはコピーできない場合があります
→ 必要に応じて保護を解除してからコピーします。
まとめ
- Worksheets(“名前”).Copy でシートをコピーできる
- コピー先を指定することで、同じブック内でも複製可能
- 名前変更や複数コピーなど、実務で便利な使い方も多い
テンプレートシートを複製する場面など、日常的に役立つテクニックです。

decopon
シートのコピーは、VBAの中でも特に実務で使う場面が多い機能です。
テンプレートを複製したり、作業前にバックアップを作ったりと、活用の幅が広いので、ぜひ気軽に使ってみてください。

moco
同じ形のシートを何枚も作るなら、VBAに任せるのがいちばん。
人は、必要な作業に集中できる時間が増えるね。

コメント