サイトについて      連絡先   検索

VBA シートをコピーする

はじめに

Excel VBA のシートをコピーする方法を紹介します。

Sheets.Copy メソッドか Worksheets.Copy メソッドでシートをコピーできます。

シートをコピーする

Sheets の引数にインデックスかシート名を指定すると、そのシートをコピーできます。

1 番目のシートをコピーするには Sheets(1).Copy または Worksheets(1).Copy のように指定します。

Sheets(1).Copy        ' 1 番目のシートをコピー
Sheets("Sheet1").Copy '「Sheet1」のシートをコピー

Worksheets(1).Copy        ' 1 番目のシートをコピー
Worksheets("Sheet1").Copy '「Sheet1」のシートをコピー

Copy の引数を指定しないと新しいワークブックにシートがコピーされます。

1

Copy の引数を指定して、コピー先の位置を指定できます。

Call Sheets(1).Copy(Before:=Sheets(2)) ' 指定したシートの前にコピー
Call Sheets(1).Copy(After:=Sheets(2))  ' 指定したシートの後にコピー
2

Sheets と Worksheets の違いはワークシート以外を取得するかどうかです。

このためグラフシートなどは Worksheets.Copy でコピーできません。

コピーしたシートを編集する

コピーしたシートはアクティブになります。ActiveSheet でアクティブなシートを取得できます。

Call Sheets(1).Copy(After:=Sheets(1))
Dim ws As Worksheet
Set ws = ActiveSheet ' コピーしたシートがアクティブ

' そのシートに対して編集
ws.Name = "コピー"
3

関連ページ