当前位置:首页 > 办公设计 > Office教程 > 如何按指定名称和模板批量创建Excel工作簿?

如何按指定名称和模板批量创建Excel工作簿?

1年前 (2025-05-24)Office教程930

这期给大家分享下如何按指定名单和模板批量创建工作簿。

如上图所示,有一张工作表提供了新建工作簿的名单,又有一个工作表名为”模板”,作为新建工作簿的模板。则运行以下代码即可按指定名单和模板批量创建工作簿。

Sub NewWbByTemp()
Dim rngData As Range, c As Range
Dim strName As String, strPath As String
Dim n As Long, y As Long, strErr As String
Dim shtTemp As Worksheet
On Error Resume Next '忽略程序错误继续运行
Set rngData = getRngData() '用户选择名单区域
If Err.Number Then Exit Sub '如果选择无效区域则退出程序
Set shtTemp = Worksheets("模板")
If Err.Number Then
MsgBox "HI,没找到名为模板的工作簿,请核实。"
Exit Sub
End If
Call disAppSet '取消屏幕刷新等系统设置
strPath = ThisWorkbook.Path '当前工作簿的路径为新建工作簿保存路径
If Right(strPath, 1) <> "\" Then strPath = strPath & "\"
For Each c In rngData '遍历名单
strName = c.Value '工作簿名称
If Len(strName) Then '如果工作簿名称非空
Err.Clear '清除错误
shtTemp.Copy '复制工作表,不指定位置参数,会成为活动工作簿
ActiveWorkbook.SaveAs strPath & strName '保存工作簿
If Err.Number Then '如果存在错误,说明工作簿名称不规范
n = n + 1 '记录问题名称数量
strErr = strErr & "," & strName '记录名称
Else
y = y + 1 '记录正确创建工作簿的数量
End If
ActiveWorkbook.Close , False
End If
Next
Call reAppSet
If n Then
MsgBox "有" & n & "张工作簿创建失败,原因是工作簿重名或格式错误。" & _
"名单如下:" & vbCrLf & _
Mid(strErr, 2)
ElseIf y Then
MsgBox "创建完成。"
End If
End Sub

Sub disAppSet()
With Application '取消屏幕刷新、信息警告、公式重算等
.ScreenUpdating = False
.DisplayAlerts = False
.AskToUpdateLinks = False
.Calculation = xlCalculationManual
End With
End Sub

Sub reAppSet()
With Application '取消屏幕刷新、信息警告、公式重算等
.ScreenUpdating = True
.DisplayAlerts = True
.AskToUpdateLinks = True
.Calculation = xlCalculationAutomatic
End With
End Sub

'用户选择名称来源区域
Function getRngData() As Range
Dim rngData As Range
Set rngData = Application.InputBox("请选择新建工作簿名称来源。", _
Title:="提示", _
Default:=Selection.Address, _
Type:=8) '用户选择名称来源区域
Set rngData = Intersect(rngData, rngData.Parent.UsedRange)
'交集运算,避免用户选择整列数据造成运算量虚大或选择区域空白
If rngData Is Nothing Then '如果用户关闭了对话框,或选择区域空白,则退出程序
MsgBox "未选择有效区域。"
Exit Function
End If
Set getRngData = rngData
End Function

代码详细解释见注释……

打个响指,坦白的说,这段代码和上一期代码十分相似,简直是同父异母的哥俩好。第9行至第13行代码,指定名称为”模板”的工作表为新建工作簿的模板;如果当前工作簿查无此表,则退出程序。
第21行代码使用工作表的Copy方法复制一个工作表,但未指定复制后工作表的保存位置;我们上一章讲过,这种情况下,系统会将该工作表转换为活动工作簿。
第22行代码将活动工作簿保存到指定路径下。第23至28行代码判断工作簿名称是否符合规则。其余代码和上一节代码并无二样,也就不需赘言。
……

示例文件下载,百度网盘▼
https://pan.baidu.com/s/1WBE8zrLDN6ziOKrIxvzckw
提取码: jftk

原文:https://mp.weixin.qq.com/s/3Zri1HvSL4kwW4OM9zEVIw

扫描二维码推送至手机访问。

欢迎转载或分享本篇文章。

本文链接:https://www.jcba123.com/article/1548

分享给朋友:

“如何按指定名称和模板批量创建Excel工作簿?” 的相关文章

Excel格式刷怎么用?Excel格式刷并没有你想的那么简单!

Excel格式刷怎么用?Excel格式刷并没有你想的那么简单!

格式刷相信大部分人都应该知道,平常也没少用过。Excel中格式刷可以帮助我们快速的复制内容的格式,而不用我们重新再去设置。点击一下格式刷,可以复制一次格式。点击两下格式刷,则可以无限次的使用,对吧!当然,如果你还停留在这个阶段的话,那就OUT了!下面,小汪老师就来为大家分享一下格式刷还可以有哪些方...

新函数SEQUENCE、SORTBY的使用方法

新函数SEQUENCE、SORTBY的使用方法

本期列举的公式,可以在Excel 2021版本以及最新的WPS表格中使用。 1、自动增减的序号 如下图,在A2单元格输入以下公式,可以生成随着数据增加而变化的序号。 复制 =SEQUENCE(COUNTA(B:B)-1) COUNTA(B:B)-1部分,计算B列非空单元格...

OFFSET函数常用套路

OFFSET函数常用套路

1、函数作用: 用于生成数据区域的引用,再将这个引用作为半成品,作为动态图表的数据源、或是作为其他函数的参数,进行二次加工。 2、函数用法: =OFFSET(基点,偏移的行数,偏移的列数,[新引用的行数],[新引用的列数]) 第二参数使用正数时,表示从基地向下偏移,负数表示向上偏移。 第三参数使用正...

Excel怎么玩?10个技巧就能让你上班很轻松!

Excel怎么玩?10个技巧就能让你上班很轻松!

今天小可教大家10个办公中经常用到的技巧,帮助大家提升工作效率,还会帮你升职加薪哒,一起学起来! 1、剪贴板合并数据 有时,我们需要将多单元格数据合并到一个单元格中,其实无需使用函数,利用剪贴板就能轻松合并啦! 如下GIF: 1、选中内容,Ctrl+C复制...

将多列的区域或数组合并成一列,就用TOCOL函数

将多列的区域或数组合并成一列,就用TOCOL函数

今天分享TOCOL函数的几个典型应用。 这个函数目前可以在Excel 365和最新的WPS表格中使用,作用是将多列的区域或数组转换为单列。函数用法为: =TOCOL(要转换的数组或引用, [是否忽略指定类型的值], [按行/列扫描]) 其中第二参数为0或者省略该参数时,表示保留所有值。为1表示忽略空...

打造复古3D科技海报PPT设计教程

打造复古3D科技海报PPT设计教程

第一步:打开PPT软件,创建一个空白演示文稿,新建幻灯片,并填充黑色背景.点击工具栏的插入——文本框,输入英文文字“RETURN ORIGIN”(如图1-1),在选择字体上建议笔划粗,且棱角尖锐的比较好看,我选择的字体是Lemon/Milk,你也可以根据喜好选择其他字体。接着给英文设置倾斜效...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。