我有多张工作簿,现在我想从工作簿中复制一些表并将其粘贴到新的工作簿中。问题是工作表的排列顺序不正确。 “ 2月”,“ 6月”,“ 4月”,“ 12月”等。 现在我只需要按顺序复制“一月”,“二月”和“三月”表。
我尝试了下面的代码,它正在处理数据,但没有其他内容,即首先是Januray表,然后是2月,然后是3月
Sub MoveSheets()
Worksheets(Array("Janurary", "February", "March")).Copy
Set wbNew = ActiveWorkbook
With wbNew
ActiveWorkbook.SaveAs FileName:="F:\WIN7PROFILE\Desktop\Myfolio testing\" & "\IRIS.xls"
.Save
End With
End Sub
我希望工作表1是1月 工作表2将于2月 工作表3将于3月
答案 0 :(得分:0)
您可以循环复制它们,因此无论之前的顺序如何,都将其复制到正确的顺序。
Option Explicit
Public Sub ExportWorksheets()
Dim SheetList() As Variant
SheetList = Array("Janurary", "February", "March") 'this is the order you want
'create a new workbook
Dim NewWorkbook As Workbook
Set NewWorkbook = Application.Workbooks.Add
'copy each sheet in the right order
Dim SheetName As Variant
For Each SheetName In SheetList
ThisWorkbook.Sheets(SheetName).Copy After:=NewWorkbook.Sheets(NewWorkbook.Sheets.Count)
Next SheetName
'delete the default sheet of the workbook
Application.DisplayAlerts = False
NewWorkbook.Sheets(1).Delete
Application.DisplayAlerts = True
'save and close
NewWorkbook.SaveAs Filename:="F:\WIN7PROFILE\Desktop\Myfolio testing\" & "\IRIS.xls"
NewWorkbook.Close SaveChanges:=False
End Sub
请注意,如果您创建新工作簿,则某些版本的Excel会创建多个空工作表。为了安全起见,您可以使用以下代码删除所有空白表。
'delete ALL the default sheets of the workbook
Application.DisplayAlerts = False
Dim i As Long
For i = 1 To NewWorkbook.Sheets(SheetList(0)).Index - 1
NewWorkbook.Sheets(1).Delete
Next i
Application.DisplayAlerts = True