マクロでのワークシートのコピー(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つのブックから別のブックにコピーする場合は、マクロを1回変更するだけで、Copyメソッドが呼び出される行に移動できます。
Sheets.Copy
これにより、ブック内のすべてのワークシートで構成されるSheetsコレクション全体がコピーされます。
Copyメソッドは、ワークシートを新しいブックにコピーするためだけのものではないことに注意してください。同じワークブック内のワークシートをコピーするためにも使用できます。あなたがする必要がある唯一のことはあなたがコピーを作りたい現在のワークブックのどこに指定することです:
ActiveSheet.Copy After:=Sheets("Sheet7")
このコード行は、アクティブなワークシートを同じワークブックにコピーして、Sheet7という名前のワークシートの後に表示されるようにします。ニーズにより適している場合は、代わりに、コピーを配置する前のワークシートを指定できます。
ActiveSheet.Copy Before:=Sheets("Sheet7")
これにより、ワークシートはSheet7の後ではなく前に配置されます。
注:
このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。
_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。
このヒント(2784)は、Microsoft Excel 97、2000、2002、および2003に適用されます。Excel(Excel 2007以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。
linkマクロでのワークシートのコピー。