需求:
目前有一个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")
生成的结果如下: