'批量删除除数据和模板以外的其他工作表
Public Function DeleteSheets()
Dim i As Integer
Application.DisplayAlerts = False '不显示提示对话框。
For i = 1 To Sheets.Count '删除除数据和模板以外的其他工作表。
If Sheets.Count >= 13 Then
Sheets(13).Delete '从第13个工作表开始删除。
End If
Next
End Function
'复制处理数据
Public Function CopyTheData()
DeleteSheets
Dim N As Integer '数据工作表中实际包含数据的行数N,即本案例中学生的人数。
Dim i As Integer '第i条数据,第i个学生。
'之所以减1,是因为「数据工作表」含有一个标题行。
N = Sheets("数据").UsedRange.Rows.Count - 1
For i = 1 To N
'把工作表另存为工作簿
Public Function SplitAndSaveFiles()
CopyTheData '调用CopyTheData
Dim fileName As String
For i = 13 To Sheets.Count
Sheets(i).Select '选择第i个工作表(i>=13)
fileName = Sheets(i).Name '工作表的名称,案例中为学生的名字
Sheets(i).Copy '复制第i个工作表(i>=13)为新的工作簿
ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, fileName:= _
"G:\8年级\" & fileName & ".pdf" _
, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=False
ActiveWindow.Close '关闭新工作簿
Windows("测试.xlsm").Activate '激活学生考试成绩表.xlsm
Next
End Function