Excelのワークシートを別の場所にコピーする方法について説明しています。Copyメソッドを使い、BeforeやAfterの引数でコピー先の位置を指定できます。いずれの引数も指定しなければ、新しいワークブックが作成され、その中にコピーされたワークシートが含まれます。複数のワークシートも同様に新しいブランクワークブックにコピー可能です。ただし、ソースとデスティネーションは同じ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
Worksheetobject. - Before (Optional): Specifies the sheet before which the copied sheet will be placed; cannot be used with the
Afterparameter. - After (Optional): Specifies the sheet after which the copied sheet will be placed; cannot be used with the
Beforeparameter.
Behavior:
- If neither
BeforenorAfteris 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:
-
Copy Sheet1 after Sheet3:
vba
Worksheets(“Sheet1”).Copy After:=Worksheets(“Sheet3”) -
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 -
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.