将一个xls文件内的第一个sheet的数据(其中第一行是列名)按照指定行数进行切割,并生成新的xls文件进行保存,用宏代码实现
代码如下:
Option Explicit
Sub SplitWorksheetByRows()
Dim RowLimit As Long
Dim OriginalSheet As Worksheet
Dim NewWorkbook As Workbook
Dim LastRow As Long
Dim SheetName As String
Dim NumberOfWorkbooks As Integer
Dim CurrentWorkBook As Integer
Dim StartRow As Long
Dim EndRow As Long
RowLimit = InputBox("请输入需要切割的行数", "切割行数")
Set OriginalSheet = ThisWorkbook.Worksheets(1)
LastRow = OriginalSheet.Cells(Rows.Count, 1).End(xlUp).Row
NumberOfWorkbooks = Application.WorksheetFunction.Ceiling(LastRow / RowLimit, 1)
For CurrentWorkBook = 1 To NumberOfWorkbooks
Set NewWorkbook = Workbooks.Add
StartRow = (CurrentWorkBook - 1) * RowLimit + 2
EndRow = Application.WorksheetFunction.Min(StartRow + RowLimit - 1, LastRow)
OriginalSheet.Rows(1).Copy Destination:=NewWorkbook.Worksheets(1).Rows(1)
OriginalSheet.Range(OriginalSheet.Cells(StartRow, 1), OriginalSheet.Cells(EndRow, OriginalSheet.Cells(1, Columns.Count).End(xlToLeft).Column)).Copy Destination:=NewWorkbook.Worksheets(1).Range("A2")
SheetName = OriginalSheet.Name & "_" & Format(CurrentWorkBook, "00")
NewWorkbook.SaveAs ThisWorkbook.Path & Application.PathSeparator & "分段_" & SheetName & ".xls", xlExcel8
NewWorkbook.Close SaveChanges:=False
Next CurrentWorkBook
Set NewWorkbook = Nothing
Set OriginalSheet = Nothing
MsgBox "操作完成"
End Sub