2018年5月29日シートシートのCopyメソッドシートのコピーを行うにはCopyメソッドを使います。コピーを行うとそのコピー先でそのシートがアクティブになります。同じブックだけでなく別のブックや新規ブックにコピーすることも可能です。その際も別ブックや新規ブックがアクティブになり、コピーしたシートもアクティブになります。別ブックにコピーする場合はそのブックが開いていなければなりません。Array関数を使うと複数のシートを一度にまとめてコピーすることが可能です。Copyをする際にシートを指定する方法には3つありますが、それについては「VBAでシートをコピーする際のシートの指定方法」をご参照ください。構文Copyメソッドには5つの親オブジェクトがあります。通常はワークシートを意味するWorksheetオブジェクトを使います。Worksheet])BeforeとAfterの型は実際には未定義によるVariant型ですが、わかりやすいようにWorksheet型としています。親オブジェクトとしてWorksheetオブジェクト、Chartオブジェクト、DialogSheetオブジェクト、Worksheetsコレクション、Sheetsコレクションのいずれかを指定します。グラフシート用のChartオブジェクトやダイアログシート用のDialogSheetオブジェクトを使うことはまずないと思います。Worksheetsコレクションを指定する場合にワークシートを全てコピーします。グラフシート、ダイアログシートはコピーされません。Sheetsコレクションを指定する場合はシートの種類に関わらず全シートをコピーします。Beforeでシートを指定すると、その左に対象シートがコピーされます。BeforeとAfterを同時に設定することは出来ません。設定した場合はエラーになります。Afterでシートを指定すると、その右に対象シートがコピーされます。BeforeとAfterを同時に設定することは出来ません。設定した場合はエラーになります。BeforeとAfterの両方を省略した場合は、対象シートを新規ブックにコピーされます。別ブックにシートをコピーする場合に、同じ名前のシートが存在することがあります。その場合はエラーにはならず、コピーしたシートのシート名が「元のシート名」+「半角スペース」+「(連番)」になります。連番は2から始まります。サンプルコード新規ブックにコピーCopyメソッドの引数を省略しているため、新規ブックにシートをコピーします。未保存のBook7というブックにシートをコピーするサンプルです。引数BeforeによりBook7の左から2番目のシートの左にコピーします。開いていない別ブックにコピーするサンプルです。開いていないブックにはシートのコピーはできないため一度開きます。その後、シートのコピーを行います。ブックのOpenメソッドを実行するとアクティブブックが開いたブックに変更されるため、事前にコピー元のアクティブブックとコピー先の開くブックのWorkbookオブジェクトを保持しています。12行目のCopyメソッドでは、コピー元のWorkbookオブジェクトとコピー先のWorkbookオブジェクト+シートを指定しています。Subブックが開いているかどうか不明の場合ブックが開いているかどうか不明な場合は「ブックが開かれているかチェックする」のサンプルコードをご参照ください。ブックが開いているかどうかの分岐の条件文をそのまま使えます。あとはIfとElseの処理以降にシートコピーの処理を書くだけです。IsBookOpened関数とGetFileName関数は上記リンク先をご参照ください。複数のシートを一度にコピーする場合はWorksheetsコレクションやSheetsコレクションの引数にArray関数でコピーしたいシートを全て指定して、Copyメソッドを行います。Array関数の引数にはシート名を指定します。Excel作業をVBAで効率化シェアお問合わせTOPへ。