【将一个xls文件内的第一个sheet的数据(其中第一行是列名)按照指定行数进行切割,并生成新的xls文件进行保存,用宏代码实现】

5 篇文章 0 订阅

将一个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")
        
        ' 始终保存为.xls格式
        NewWorkbook.SaveAs ThisWorkbook.Path & Application.PathSeparator & "分段_" & SheetName & ".xls", xlExcel8


        NewWorkbook.Close SaveChanges:=False
    Next CurrentWorkBook
    
    ' 清理变量
    Set NewWorkbook = Nothing
    Set OriginalSheet = Nothing
    MsgBox "操作完成"
End Sub


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值