Worksheet.Copy Method (Excel)

Office 2013 and later
GitHub-Mark-64px

Contribute to this content

Use GitHub to suggest and submit changes. See our guidelines for contributing to VBA documentation.

Copies the sheet to another location in the current workbook or a new workbook.

expression .Copy(Before, After)

expression A variable that represents a Worksheet object.

Parameters

Name

Required/Optional

Data Type

Description

Before

Optional

Variant

The sheet before which the copied sheet will be placed. You cannot specify Before if you specify After.

After

Optional

Variant

The sheet after which the copied sheet will be placed. You cannot specify After if you specify Before.

If you don't specify either Before or After, Microsoft Excel creates a new workbook that contains the copied sheet object that contains the copied Worksheet object. The newly created workbook holds the Application.ActiveWorkbook Property (Excel) property and contains a single worksheet. The single worksheet retains the Worksheet.Name Property (Excel) and Worksheet.CodeName Property (Excel) properties of the source worksheet. If the copied worksheet held a worksheet code sheet in a VBA project, that is also carried into the new workbook.

An array selection of multiple worksheets can be copied to a new blank Workbook Object (Excel) object in a similar manner.

This example copies Sheet1, placing the copy after Sheet3.

Worksheets("Sheet1").Copy After:=Worksheets("Sheet3")

This example first copies Sheet1 to a new blank workbook, then saves and closes the new workbook.

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

This example copies worksheets Sheet1, Sheet2 and Sheet4 to a new blank workbook, then saves and closes the new workbook.

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

Show: