ワークブックのデータを整理する場合、ワークシートをあるワークブックから別のワークブックにコピーすることは珍しくありません。実際、[シートの移動]または[シートのコピー]コマンド(ワークシートのタブを右クリックすると表示されます)は私が頻繁に使用するコマンドであり、他の人も同じように頻繁に使用することは間違いありません。

では、マクロ内でワークシートをコピーするにはどうすればよいでしょうか。答えは、個々のワークシートまたはワークシートのグループでCopyメソッドを使用することです。

たとえば、次のマクロコードは、現在選択されているワークシートを新しいブックにコピーします。

ActiveSheet.Copy

それでおしまい;ワークシートを名前のない新しいワークブックにコピーするために必要なのは、1行だけです。行を実行した後、新しいワークブックが選択され、次のようなコードを使用して保存できます。コードの最初の行はブックを保存し、2行目はブックを閉じます。

ActiveWorkbook.SaveAs Filename:="MyNewFile.xlsm", _   FileFormat:=xlOpenXMLWorkbookMacroEnabled ActiveWindow.Close

特定のシートを別のブックにコピーする場合は、ActiveSheetオブジェクトを使用する代わりに、コピーするシートの名前を指定します。

Sheets("Sheet1").Copy

この例では、Sheet1という名前のワークシートをSheetsコレクションから新しいブックにコピーします。すでに説明したように、新しいワークブックを保存できます。

コピー方法をワークシートで使用する場合、一度に1枚のシートをコピーすることに限定されません。シートのグループを選択している場合でも、1つのコマンドラインを使用してすべてのシートを新しいブックにコピーできます。

これがこのマクロで行われることです:

Sub CopyWorkbook()

Dim sCopyName As String

sCopyName = "My New Workbook.xlsm"



SelectedSheets.Copy     ActiveWorkbook.SaveAs Filename:=sCopyName, _       FileFormat:=xlOpenXMLWorkbookMacroEnabled End Sub

コピーコマンドの使用に注意してください。マクロは、1つのワークシートを選択した場合でも50の場合でも機能します。それは問題ではありません。すべてのワークシートをあるワークブックから別のワークブックにコピーする場合は、マクロを1回変更するだけで、Copyメソッドが呼び出される行に移動できます。

Sheets.Copy

これにより、ブック内のすべてのワークシートで構成されるSheetsコレクション全体がコピーされます。

Copyメソッドは、ワークシートを新しいブックにコピーするためだけのものではないことに注意してください。同じワークブック内のワークシートをコピーするためにも使用できます。あなたがする必要がある唯一のことはあなたがコピーを作りたい現在のワークブックのどこに指定することです:

ActiveSheet.Copy After:=Sheets("Sheet7")

このコード行は、アクティブなワークシートを同じワークブックにコピーして、Sheet7という名前のワークシートの後に表示されるようにします。ニーズにより適している場合は、代わりに、コピーを配置する前のワークシートを指定できます。

ActiveSheet.Copy Before:=Sheets("Sheet7")

これにより、ワークシートはSheet7の後ではなく前に配置されます。

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(11856)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice 365のExcelに適用されます。Excelの古いメニューインターフェイス用のこのヒントのバージョンは、次の場所にあります。