用vba复制模板,并根据指定的列形成多个sheet重命名

需求:

目前有一个sheet,需要复制多份,而且sheet里的名字需要根据指定的列去生成,即,张三一个sheet,李四一个sheet。

实现方法如下:

'**********************************************
'*  删除表格,可以不用复制这段代码
'* param no:表示删除从第几页开始到最后一页的sheet(加入要保留前两页,no=3)
'**********************************************
 
Sub delete()
 
Dim no
 
no = 3
 
For i = Sheets.Count To no Step -1
 
Sheets(i).delete
 
Application.DisplayAlerts = False '无论删除多少个sheet只提醒一次是否要删除
 
Next
 
End Sub
 
 
 
'**********************************************
'*  复制表格,要根据一个目录来
'* param copy_source_table:复制模板表的表名
'* param sheet_name_source_table_name: sheetName来源的表
'* param sheet_name_source_table_colum: sheetName来源的表中的名称所在的具体列
'**********************************************
 
 
 
Sub CopyByContent()
 
Dim num, name, sheet_name_source_table_name, sheet_name_source_table_colum, copy_source_table
 
copy_source_table_name = "Sheet2"
sheet_name_source_table_name = "Sheet1"
sheet_name_source_table_colum = "A"
num = Sheets(sheet_name_source_table_name).UsedRange.Rows.Count '获取某个表格使用的函数
For i = 1 To num
    Sheets(copy_source_table_name).Copy After:=Sheets(Sheets.Count)
 
    name = Sheets(sheet_name_source_table_name).Cells(i, sheet_name_source_table_colum).Value
 
    ActiveSheet.name = name
 
Next
 
  
 
End Sub

vba宏结果界面如下:

生成的excel如下:

参考来源:

excel快速批量复制某个sheet(sheet命名来自某个sheet中某一列数据)_大海Git的博客-CSDN博客_excel 批量复制sheet

后来尝试了一下python方法,美中不足的是,只能生成自带的copy名称

附python实现代码:

from openpyxl import load_workbook

workbook = load_workbook(filename="test.xlsx")
sheet = workbook['test1']
for i in range(160):#复制160次Excel
    sheet_name="{0}#".format(i)
    target = workbook.copy_worksheet(sheet)
workbook.save(filename="测试_0912.xlsx")

生成的结果如下:

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值