VBA 一键批量创建工作簿、工作表

学会VBA,工作好轻松

1. 一键批量创建工作簿

在活动的Excel文件,表A列里面批量填写需要创建工作簿的名称,把如下短短10来行VBA代码复制到编辑器模块下运行,相关文件即刻被创建

Private Sub CommandButton1_Click()
 '动态根据A列的有效内容创建工作簿
        Dim NewBook As Workbook
        Dim LastCell As Range
        Set LastCell = Range("a" & Rows.Count).End(xlUp)
        Dim rng As Range
        For Each rng In Sheets(1).Range("a2", LastCell)
            Set NewBook = Workbooks.Add '新建工作簿
            NewBook.SaveAs (ThisWorkbook.Path & "\" & rng.Value & ".xlsx") '保存工作簿
            NewBook.Close  '关闭工作簿
        Next rng
End Sub

2.一键批量创建工作表

Sub 批量创建工作表()
    ' 动态根据A列的有效内容批量创建工作表
    ' 表名为A列列名
        Dim rng As Range, Wb As Workbook, WS As Worksheet
        Dim LastCell As Range
        Set LastCell = Range("a" & Rows.Count).End(xlUp)
        Set Wb = Workbooks.Add
        For Each rng In Sheet1.Range("a2", LastCell)
            Set WS = Wb.Sheets.Add
            WS.name = rng.Value
        Next rng
        Application.DisplayAlerts = False
        Wb.Sheets(Wb.Sheets.Count).Delete
        Application.DisplayAlerts = True
        Wb.SaveAs (ThisWorkbook.Path & "\" & Sheet1.Cells(1, 1).Value & ".xlsx")
        Wb.Close
        MsgBox ("批量创建工作表完毕!")
End Sub

3、一键批量创建工作表进阶

在批量创建工作表的同时,把模板工作表复制到新创建的工作表

Sub 批量创建工作表进阶2()
    ' 动态根据A列的有效内容批量创建工作表
    ' 表名为A列列名
    ' 将sheet2作为模板源批量复制到新创建的表中
        Dim rng As Range, Wb As Workbook, WS As Worksheet
        Dim LastCell As Range
        Dim lastRow As Long, lastColumn As Long
        lastRow = Sheet2.Cells(Sheet2.Rows.Count, 1).End(xlUp).Row
        lastColumn = Sheet2.Cells(5, Sheet2.Columns.Count).End(xlToLeft).Column
        Set LastCell = Sheet1.Range("a" & Rows.Count).End(xlUp)
        Set Wb = Workbooks.Add
        For Each rng In Sheet1.Range("a2", LastCell)
            Set WS = Wb.Sheets.Add
            WS.name = rng.Value
            Sheet2.Range("A1", Sheet2.Cells(lastRow, lastColumn)).Copy WS.Range("a1")
        Next rng
        Application.DisplayAlerts = False
        Wb.Sheets(Wb.Sheets.Count).Delete
        Application.DisplayAlerts = True
        Wb.SaveAs (ThisWorkbook.Path & "\" & Sheet1.Cells(1, 1).Value & ".xlsx")
        Wb.Close
        msgbox("模板化批量创建工作表完毕!")
End Sub

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值