When you don't specify a parameter after the Copy method, a copy of
the worksheet is created as the only worksheet in a newly created
workbook. However, a workbook must contain at least one visible
worksheet. Your code fails because it instructs Excel to create a new
workbook with no visible worksheet. Try
Application.ScreenUpdating = False
With ThisWorkbook.Worksheets("Sheet2")
.Visible = True
.Copy
.Visible = False
''''
' At this point, the newly created workbook containing
' only Sheet2 is the visible ActiveWorkbook. To return
' back to the original workbook, uncomment the line below:
''''
'.Parent.Activate
End With
Application.ScreenUpdating = True
Cordially,
Chip Pearson
Microsoft Most Valuable Professional
Excel Product Group, 1998 - 2009
Pearson Software Consulting, LLC
www.cpearson.com
(email on web site)