ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 591|回复: 8

[求助] 请教怎么根据模板表格和数据源,批量生成单个工作簿?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2022-11-19 17:47 | 显示全部楼层 |阅读模式
怎么根据模板表格数据源,批量生成单个工作簿?如下图,我要按我的模板,依据日期生成100个或者1000个单独工作簿。生成的工作簿保存的时候命名最好带有日期(或者在数据源内的再加一列作为命名名称都行),麻烦知道的大师教一下,谢谢!
0微信截图_20221119171056.png

请帮忙做的表.rar (19.77 KB, 下载次数: 27)

TA的精华主题

TA的得分主题

发表于 2022-11-19 18:52 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2022-11-19 22:20 | 显示全部楼层

Public Sub 选择科目()
   Application.ScreenUpdating = False
   Set stp1 = Worksheets("数据源") 'stp1指向学生数据sheet
   Set stp2 = Worksheets("统计表") 'stp2指向监考sheet
   Set Rng = stp2.Cells(1).CurrentRegion
   Set dic = CreateObject("scripting.dictionary") '建立关键字的字典
   For i = 2 To UBound(arr)
      If Not dic.exists(arr(i, 1) & "") Then
           ReDim brr(1 To arr(i, 5), 1 To 4)
           For j = 1 To arr(i, 5)
               brr(j, 1) = arr(i, 1): brr(j, 2) = arr(i, 3): brr(j, 3) = arr(i, 4)
           Next
           Set wb = Application.Workbooks.Add '指向新建工作簿
           With wb
                .SaveAs Filename:=ThisWorkbook.Path & "\" & Replace(arr(i, 1), "/", "-") & ".xlsx", ReadOnlyRecommended:=1
                Set shtp = 复制工作表(stp2, Replace(arr(i, 1), "/", "-"), wb)
                shtp.Cells(5, 1).Resize(arr(i, 5), 4) = brr
                .Close False
            End With
        End If
    Next
End Sub
Public Function 复制工作表(stp As Worksheet, st$, Optional wb = Nothing) '将stp工作表复制到wb工作薄并重命名为st
    Application.DisplayAlerts = False '关闭警告提示
    If wb Is Nothing Then Set wb = stp.Parent
    With wb
         stp.Copy After:=Worksheets(Worksheets.Count) '复制工作表
         On Error Resume Next '忽略错误继续执行VBA代码,避免出现错误消息
mingming2:
         Err.Clear
         ActiveSheet.Name = st '重命名
         If Err.Nunber = 1004 Then '如果重命名失败,即说明工作表存在,则删除
            .Worksheets(st).Delete '删除st工作表
            GoTo mingming2
         End If
         On Error GoTo 0 '以下恢复捕捉代码出现错误消息
         '.Worksheets(st).Tab.ColorIndex = 3 '工作表标签红色
         Set 复制工作表 = .Worksheets(st) '返回新建工作表
     End With
     Application.DisplayAlerts = True '打开警告提示
End Function

TA的精华主题

TA的得分主题

发表于 2022-11-19 22:21 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2022-11-19 22:24 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-11-21 17:33 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2022-11-21 17:55 | 显示全部楼层
lover826 发表于 2022-11-21 17:33
可以对照我那个帮忙做一下吗?感谢!

当志愿者了  一个星期内摸不到电脑  爱莫能助

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-11-22 15:33 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
捞屎人 发表于 2022-11-21 17:55
当志愿者了  一个星期内摸不到电脑  爱莫能助

哦哦,你这个模板的原始文档看看,是怎么个逻辑?

TA的精华主题

TA的得分主题

发表于 2022-11-22 15:44 | 显示全部楼层
这个不难,难在我没有理解“2022-01-01走了2户吗“?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-19 13:39 , Processed in 0.041690 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表