【VBA】複数のシートを同時にまとめてコピーする

複数のワークシートを同時にコピーする方法を、3つ紹介します。

目的や状況に応じて、使いやすい方法を選んでください。

シート名を配列で指定してコピー

Worksheets(Array(“○○”,”○○”)).Copyと書き、○○の部分に「シート名」を指定します。

1番基本的な書き方で、「コピーするシートのシート名がわかっている時」の方法です。

シート名はダブルクォーテーションで囲みます。
コピーするシートの数だけ、カンマ(,)でシート名をつなげていきます。

コード

 

解説

シート「5月売上」、「6月売上」、「7月売上」が新しいエクセルファイルにコピーされます。

Array関数について

初めて使う人にはピンときにくい関数です。
最初のうちは、「配列(複数の値)を渡す時は、Array関数を頭に付けて渡す」と割り切って、使いながら慣れていけばOKです。

 

インデックスを配列で指定してコピー

Worksheets(Array(○○,○○)).Copyと書き、○○の部分に「インデックス(何番目)」を指定します。

最初に紹介したシート名の指定とは違い、ダブルクォーテーションで囲まないので注意してください。

「シート名はわからないけど、何番目かわかっている時」、「処理によってシート名が違う時」は、このインデックスによる指定でシートをコピーします。

インデックスはダブルクォーテーションで囲みません。
コピーするシートの数だけ、カンマ(,)でインデックスをつなげていきます。

コード

 

解説

ブックの左から1、2、3番目のシートが新しいブックにコピーされます。

 

選択状態の複数シートをコピー

「プログラムの処理などで、コピーするシートがすでに選択状態になっている時」は、ActiveWindow.SelectedSheets.Copyで選択状態のシートをコピーできます。

コード

 

解説

今回のプログラムでは、Worksheets(Array(1, 2, 3)).Selectで、左から1、2、3番目のシートを選択状態にしています。

そのため、ActiveWindow.SelectedSheets.Copyでブックの左から1、2、3番目のシートがコピーされます。

その他テクニックは、次の記事を参考にしてください。

https://excel-toshokan.com/vba-sheet-copy/

関連記事

VBAテクニック辞典
成果を出す5つのポイント
VBAテクニック辞典
えくとしょ | 初心者のためのエクセルとVBAの図書館
タイトルとURLをコピーしました