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

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

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

スポンサーリンク

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

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

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

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

コード

解説

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

Array関数について

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

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

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

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

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

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

コード

 

解説

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

 

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

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

コード

 

解説

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

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

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

【VBA】ワークシートのコピーとテクニック
Copyメソッド ワークシートをコピーするには、WorksheetsのCopyメソッドを使います。 コピーしたシートは、新しいブックに作成されます。 コード '「住所一覧」シートをコピーする Worksheets("住...

関連記事

VBAテクニック辞典
VBAテクニック辞典
エクセルVBAおすすめ本|実際に読んだ本を目的別に紹介
エクセルVBAおすすめ本|実際に読んだ本を目的別に紹介
中途・未経験でプログラマーに転職する方法【30代前半までが勝負】
中途・未経験でプログラマーに転職する方法【30代前半までが勝負】
タイトルとURLをコピーしました