与 30万 粉丝一起学Excel


模板

名称

学员提到需要生成的合同有108家,传统方法插入工作表,复制粘贴修改名称,这样太慢了,希望能够批量生成。
既然是批量,那当然要借助VBA代码了,先来按运行效果。点下批量生成的按钮,瞬间就全部生成好了。

VBA跟公式不一样,很难解释每个代码的含义,不过对于普通人而言,懂得操作代码还有运行就可以。
点开发工具,VB,插入模块,将VBA下面的代码复制粘贴进去。

Sub 批量生成()Dim i, x As Integer'删除无关的工作表Application.DisplayAlerts = FalseFor x = Sheets.Count To 3 Step -1Sheets(x).DeleteNextApplication.DisplayAlerts = True'批量生成模板For i = 2 To Sheets("名称").Cells(Rows.Count, 1).End(xlUp).RowSheets("模板").SelectSheets("模板").Copy After:=Sheets(Sheets.Count)Sheets(Sheets.Count).Name = Sheets("名称").Range("A" & i)Sheets(Sheets.Count).Range("a2") = "甲方:" & Sheets("名称").Range("A" & i)NextEnd Sub
插入一个按钮或者形状都行,来运行代码。

放在同一个工作簿是为了方便打印,如果是为了方便发送给客户,要批量生成108个工作簿才行。针对这种又该如何实现呢?

Sub 批量生成工作簿()Dim i As Long, lastRow As LongDim newWb As WorkbookDim savePath As String, srcName As StringsavePath = ThisWorkbook.PathIf savePath = "" ThenMsgBox "请先把本工作簿保存到目标文件夹,再运行!", vbExclamationExit SubEnd IfsavePath = savePath & "\"Application.ScreenUpdating = FalseApplication.DisplayAlerts = FalselastRow = Sheets("名称").Cells(Rows.Count, 1).End(xlUp).RowFor i = 2 To lastRowsrcName = Sheets("名称").Range("A" & i).Value ' 先取值,躲开活动簿切换坑If srcName <> "" ThenSheets("模板").Copy ' 复制到新工作簿并激活Set newWb = ActiveWorkbooknewWb.Sheets(1).Range("A2").Value = "甲方:" & srcNamenewWb.Sheets(1).Name = "模板"newWb.SaveAs savePath & srcName & ".xlsx"newWb.Close SaveChanges:=FalseEnd IfNext iApplication.DisplayAlerts = TrueApplication.ScreenUpdating = TrueMsgBox "批量生成工作簿完成!共生成 " & lastRow - 1 & " 个文件。", vbInformationEnd Sub
最后,还有点小细节说明下,VBA代码基本上只能在Excel里面使用,WPS表格不通用。
如果你是第一次用VBA,在Excel选项,自定义功能区,勾选开发工具。

点开发工具,宏安全性,宏设置,启用VBA宏。

工作簿要另存为启用宏的工作簿。

别再傻傻的纯手工,吃力不讨好。
现在有一项全新的服务,5年期一对一私教,帮你搞定表格的问题。
随时问:工作中遇到任何表格难题,直接甩给我。
精准答:不是扔给你一段视频,而是针对你的表格给方案。
保隐私:私聊沟通,不用担心公司数据在大群里泄露。
这699元,买的不是课程,而是5年的安心感。

上篇:无意间想到的对账方法,零基础1分钟都能学会,是目前最快最简单!

请把「Excel不加班」推荐给你的朋友
别忘了点赞支持卢子哦↓↓↓
夜雨聆风