Blog
ブログで学ぶUX

Excel VBAでシートをコピーする:Copy

VBA でシートをコピーするときは、Copy メソッドを使用します。ここでは、Copy メソッドの使い方について説明します。

Copy メソッドの使い方

Copy メソッドの構文は以下の通りです。

コピーするシート.Copy(Before, After)

Copy メソッドではコピーしたシートを指定したシートの前、あるいは後ろに挿入するかを引数で指定します。

引数のシートを指定するときは Before や After の後にコロンとイコール := をつけて指定します。この := は、引数の順序に関係なく、特定の引数へ値を設定するときに用います。また、Before と After を同時に使用することはできません

もし引数に何も指定しなかった場合は、新規のブックにコピーされます。

以下は、Sheet1 を Sheet2 の後の位置にコピーする例です。

Worksheets("Sheet1").Copy After := Worksheets("Sheet2")

この場合、コピーされたシート名「Sheet1 (2)」のような形で自動的に名付けられます。

シートを先頭にコピーする

以下は、Sheet1 を先頭の位置にコピーする例です。

Worksheets("Sheet1").Copy Before := Worksheets(1)

引数の Before に1番目のシートを指定することで、先頭の位置にシートをコピーすることができます。

シートを末尾にコピーする

以下は、 Sheet1 を末尾の位置にコピーする例です。

Worksheets("Sheet1").Copy After := Worksheets(Worksheets.Count)

まず、Worksheets.Count を使用して末尾のシートのインデックス番号を取得しています。そのインデックス番号を利用してシートを取得し、 After の引数に指定することによって末尾の位置にシートをコピーしています。

名前を指定してコピーする

以下は、シートに名前を付けてコピーする例です。この例ではシート名の末尾に日付を付けています。

Dim todayDate as String

Worksheets("Sheet1").Copy Before := Worksheets(1) ' 先頭にコピー
todayDate = Format(Date, "yyyymmdd")             ' 今日の日付を取得
ActiveSheet.Name = "売上データ" & todayDate      ' 末尾に日付を付ける

シートをコピーすると新しくコピーされたシートがアクティブになるので、ActiveSheet.Name で名前を変更してます。上のプログラムを実行すると、Sheet1 がコピーされ「売上データ20160819」のような名前のシートが作成されます。

名前を付けるとき、既に存在するシートの名前を付けようとするとエラーになるので注意してください。

ポップインサイトでは、インタビューなどで得た実際の声に基づき
情報設計、UX戦略、Webサイト改善をご支援しています

ポップインサイトは、専任UXチームがお客様の一員となって伴走支援し、ユーザー起点の意思決定に貢献する「UXデザイン伴走/内製化支援(UXRO)」をご提供しています。

ビジネスの目的にあわせ、最適な調査や分析手法を提案・実施し、課題解決までサポートします。WebサイトのUX改善に課題がある方はお気軽にご相談ください。

UXデザイン/UXリサーチについて相談する

サービス紹介資料を無料でダウンロードする

投稿日: 2016/08/19 更新日:
カテゴリ: Web制作