关键词:Vba、制式文件、批量处理
工作中遇到制式文件的重复创建是常见,网络上提供了从易到难的不同解决办法。
但更重要的是,思维方式的提升。
![[数据]:PPT、Excel制式文件的批量制作-Vba [数据]:PPT、Excel制式文件的批量制作-Vba](https://lifetruth.top/wp-content/uploads/2026/03/image-27.png)
本文先介绍第一种方法 -vba。
Vba的优势在于,内嵌Office、即写即用,适用数据安全管控较严的公司和单位。
1、文件复制及文件重命名
storeName变量:表示店号、站点等
For i = 2 To ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
storeName = Trim(ws.Cells(i, "A").Value)
If storeName <> "" Then
FileCopy templatePath(模板路径), saveFolder(输出路径) & storeName & " -副本.pptx"
End If
Next i
2、sheet表复制及填充
定义要复制的模板sheet
Set wsSource = ThisWorkbook.Worksheets(sourceSheetName)
Set wsTemplate = ThisWorkbook.Worksheets(templateName)
给副本命名
cellValue = Trim(CStr(wsSource.Cells(i, "C").Value))
Set wsNew = ThisWorkbook.Worksheets(cellValue)
Set wsNew = ActiveSheet
wsNew.Name = cellValue
副本单元格写入对应B列值
wsNew.Range("G1").Value = bColumnValue
bColumnValue = wsSource.Cells(i, "B").Value
3、子表信息批量提取
创建和写入完成后,也即有了不同副本的实际填写结果,我们可以通过vba再次输出填写运算的汇总结果。
tgt.Name = "写入汇总"
'tgt.Range("A1:J1").Value = Array("指标1", "指标2".....)
所有指标批量抓取填入
r = 2 '结果从第2行写起
For i = 7 To Sheets.Count
Set sht = Sheets(i)
arr = Array(sht.Name, sht.Range("B1").Text)
'写入汇总表
tgt.Cells(r, 1).Resize(1, 2).Value = arr根据实际指标数调整
r = r + 1
Next i
4、输出和交互
tgt.Columns.AutoFit '美化列宽
MsgBox "汇总完成,共处理 " & (Sheets.Count - 7) & " 张表。", vbInformation
正文完