用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宏结果界面如下:

用vba复制模板,并根据指定的列形成多个sheet重命名_第1张图片

生成的excel如下:

用vba复制模板,并根据指定的列形成多个sheet重命名_第2张图片

用vba复制模板,并根据指定的列形成多个sheet重命名_第3张图片

参考来源:

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")

生成的结果如下:

用vba复制模板,并根据指定的列形成多个sheet重命名_第4张图片

你可能感兴趣的:(excel,vba,宏,excel)