原始数据如下
Public Sub 生成文件()
'
'类似工资条单独生成多了表vba,表名根据文件中数据生成
'
Application.ScreenUpdating = False
Dim arr, wb As Workbook, i As Long, mFullpath$, FolderPath$
arr = Sheet1.UsedRange.Value
FolderPath = ThisWorkbook.Path & "\"
For i = 2 To UBound(arr) ' 数据行,第3行开始,如果不是,这里修改****
If arr(i, 2) <> "" Then
Set wb = Application.Workbooks.Add
With wb
With .Sheets(1)
Application.ActiveWorkbook.Sheets(1).Name = arr(i, 3) '重命名sheet名
For j = 1 To UBound(arr, 2)
.Cells(1, j) = arr(1, j) ' 取表头
.Cells(2, j).Value = arr(i, j) ' 取内容
Next
End With '
mFullpath = FolderPath & arr(i, 3) & ".xlsx"
.SaveAs Filename:=mFullpath, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
.Close
End With
End If
Next
Set wb = Nothing
Application.ScreenUpdating = True
End Sub
复制代码,根据对应表格的格式修改行列关系后
点击执行即可,建议测试生成效果,调试下 F8 步进测试下