按顺序安排工作表

时间:2019-07-12 09:51:22

标签: excel vba

我有多张工作簿,现在我想从工作簿中复制一些表并将其粘贴到新的工作簿中。问题是工作表的排列顺序不正确。 “ 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月

1 个答案:

答案 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