ワークシートのコピー メソッド (Excel) | Microsoft Learn

Excelのワークシートを別の場所にコピーする方法について説明しています。Copyメソッドを使い、BeforeAfterの引数でコピー先の位置を指定できます。いずれの引数も指定しなければ、新しいワークブックが作成され、その中にコピーされたワークシートが含まれます。複数のワークシートも同様に新しいブランクワークブックにコピー可能です。ただし、ソースとデスティネーションは同じExcelアプリケーションインスタンス内でなければなりません。例として、特定のワークシートのコピーと新しいワークブックとしての保存方法を示しています。

Excel VBAでのシートのコピー

Excel VBAを使用すると、ワークブック内のシートを別の位置にコピーすることができます。この機能は、大量のデータを扱う際や、異なるプロジェクト間で情報を移動する際に非常に便利です。

構文

vba
expression.Copy (Before, After)

  • expression: Worksheetオブジェクトを表す変数です。

パラメータ

名前 必須/オプション データ型 説明
Before オプション Variant コピーされたシートを配置する前のシートを指定します。Afterを指定する場合、Beforeは指定できません。
After オプション Variant コピーされたシートを配置する後のシートを指定します。Beforeを指定する場合、Afterは指定できません。

注意: いずれのパラメータも指定しない場合、Microsoft Excelは新しいワークブックを作成し、そこにコピーされたシートを配置します。この新しいワークブックには、元のシートの名前やコード名が保持されます。また、コピーされたシートにVBAプロジェクトのコードシートがある場合も、新しいワークブックに持ち込まれます。

複数のシートを選択して新しい空のWorkbookオブジェクトにコピーすることも可能です。

制限事項

ソースとデスティネーションは同じExcel.Applicationインスタンス内にある必要があります。異なるインスタンス間でSheet1.Copy objWb.Sheets(1)のようなコードを使用すると、ランタイムエラー1004: “No such interface supported”が発生します。また、ThisWorkbook.Worksheets("Sheet1").Copy objWb.Sheets(1)のようなコードでは、ランタイムエラー1004: “Copy method of Worksheet class failed”が発生します。

例1: シートを指定してコピー

この例では、Sheet1をコピーしてSheet3の後ろに配置します。

vba
Worksheets(“Sheet1”).Copy After:=Worksheets(“Sheet3”)

例2: 新しいワークブックにコピー

この例では、Sheet1を新しい空のワークブックにコピーし、ワークブックを保存して閉じます。

vba
Worksheets(“Sheet1”).Copy
With ActiveWorkbook
.SaveAs Filename:=Environ(“TEMP”) & “\New1.xlsx”, FileFormat:=xlOpenXMLWorkbook
.Close SaveChanges:=False
End With

例3: 複数のシートを新しいワークブックにコピー

この例では、Sheet1、Sheet2、Sheet4を新しい空のワークブックにコピーし、ワークブックを保存して閉じます。

vba
Worksheets(Array(“Sheet1”, “Sheet2”, “Sheet4”)).Copy
With ActiveWorkbook
.SaveAs Filename:=Environ(“TEMP”) & “\New3.xlsx”, FileFormat:=xlOpenXMLWorkbook
.Close SaveChanges:=False
End With

サポートとフィードバック

Office VBAやこのドキュメントに関する質問やフィードバックがある場合は、Office VBAサポートとフィードバックをご覧ください。このリンクでは、サポートを受けたりフィードバックを提供する方法についてのガイダンスが得られます。

Excel VBAを使ったシートのコピーは、効率よくデータを管理するための強力なツールとなります。活用してみてください。

————-

Worksheet.Copy method (Excel) | Microsoft Learn

Source link

The Copy method in Excel allows you to duplicate worksheets within the same workbook or in a new workbook.

Syntax:

vba
expression.Copy (Before, After)

  • expression: A variable representing a Worksheet object.
  • Before (Optional): Specifies the sheet before which the copied sheet will be placed; cannot be used with the After parameter.
  • After (Optional): Specifies the sheet after which the copied sheet will be placed; cannot be used with the Before parameter.

Behavior:

  • If neither Before nor After is specified, Excel creates a new workbook containing the copied worksheet, which retains its original properties, including any VBA code associated with it.
  • You can copy multiple worksheets as an array to a new workbook.
  • Both source and destination must be in the same Excel application instance; otherwise, a runtime error occurs.

Examples:

  1. Copy Sheet1 after Sheet3:
    vba
    Worksheets(“Sheet1”).Copy After:=Worksheets(“Sheet3”)

  2. Copy Sheet1 to a new workbook, then save and close it:
    vba
    Worksheets(“Sheet1”).Copy
    With ActiveWorkbook
    .SaveAs Filename:=Environ(“TEMP”) & “\New1.xlsx”, FileFormat:=xlOpenXMLWorkbook
    .Close SaveChanges:=False
    End With

  3. Copy multiple sheets (Sheet1, Sheet2, Sheet4) to a new workbook:
    vba
    Worksheets(Array(“Sheet1”, “Sheet2”, “Sheet4”)).Copy
    With ActiveWorkbook
    .SaveAs Filename:=Environ(“TEMP”) & “\New3.xlsx”, FileFormat:=xlOpenXMLWorkbook
    .Close SaveChanges:=False
    End With

Support:

For questions or feedback about Office VBA, consult the Office VBA support resources available.

関連記事