マクロでのワークシートのコピー(Microsoft Excel)
ワークブックのデータを整理する場合、ワークシートをあるワークブックから別のワークブックにコピーすることは珍しくありません。実際、[シートの移動]または[シートのコピー]コマンド(ワークシートのタブを右クリックすると表示されます)は私が頻繁に使用するコマンドであり、他の人も同じように頻繁に使用することは間違いありません。
では、マクロ内でワークシートをコピーするにはどうすればよいでしょうか。答えは、個々のワークシートまたはワークシートのグループで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の古いメニューインターフェイス用のこのヒントのバージョンは、次の場所にあります。
linkマクロでのワークシートのコピー。