【Excel VBA】シートをコピーする基本コードと使い方をやさしく解説

VBA & Excel
スポンサーリンク
スポンサーリンク

はじめに

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
decopon

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

moco
moco

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

コメント

タイトルとURLをコピーしました