【Excel VBA】シートコピーの方法

Excel VBA シートコピーの方法

Excel VBAでシートをコピーする方法を説明します。

シートをコピーする

シートをコピーするときには、WorksheetオブジェクトのCopyメソッドを使います。使い方としては以下二つがあり、コピー先シートの前後どちらにコピーするかによってBeforeとAfterを使い分けます。

  • コピー元Worksheetオブジェクト.Copy Before:=コピー先Worksheetオブジェクト
  • コピー元Worksheetオブジェクト.Copy After:=コピー先Worksheetオブジェクト

シートをコピーするサンプルコード

これだけではピンとこないので、以下に自分がよく使用するサンプルを紹介します。

注意
どのサンプルも”コピー元”シートの名前をご自身がコピーしたいシート名に合わせてください。

先頭にシートをコピー  

例えば月別のシートなど、先頭のシートを最新にしておきたいような場合に使います。

先頭にシートをコピーしたい場合

copy

Worksheets("コピー元").Copy Before:Worksheets(1)

 

コピー元の一つ手前にコピー

対象シートの一つ手前にコピーしたい場合

copy

Worksheets("コピー元").Copy Before:=Worksheets("コピー元")

 

最後にシートをコピー

目次があるようなExcelで、最後に追加したシートを最後尾にしておきたい場合に使います。

最後尾にシートをコピーしたい場合

copy

Worksheets("コピー元").Copy After:=Worksheets(Worksheets.Count)

 

コピー元の一つ後にコピー

対象シートの一つ後にコピーしたい場合

copy

Worksheets("コピー元").Copy After:=Worksheets("コピー元")
メモ

なお、上記はすべて同じブック内でのCopyメソッドのサンプルですが、他のブックにコピーすることも可能です(他のブックはあらかじめ開いておく必要があります)。

コピーしたシート名を変更

上記のコピーした画像を見てもらうと分かるように、コピーしたシート名が”コピー元(2)”のようになってしまいます。

そのため、コピーしたシートの名前を変更したい場合には、コピーした後にActiveSheet.Nameに値を設定して名前を変更しましょう。

コピー後のシート名を変更

copy

Worksheets("テンプレート").Copy After:=Worksheets(Worksheets.Count)
ActiveSheet.Name = "ここにシートの名前を設定してください"

関連記事

シートコピーの応用記事の紹介です。

特定のフォルダにある複数のExcelファイルからシートをコピーしたい、というような場合のマクロを以下の記事で紹介しています。興味のある方はご覧ください。

Excel VBA 他Excelエクセル(ブック)のシートをコピーするマクロ【Excel VBA】他の複数のExcel(エクセル)のシートをコピーするマクロ

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です