这两天有个批量打印报表的需求,于是简单撸了几行代码。
使用说明:
1.将当前xlsm文件和需要打印的文件放入同一文件夹中,运行代码即可打印目录下的所有xlsx文件中的所有表。其他类型文件没有测试,应该修改一下代码也能打。
2.DO WHILE循环用于依次打开文件,FOR循环用于以此打开文件中的表。
3.直接使用时,在打印前需要自行设置好每张表的打印格式,不然打出来有可能乱作一团;也可以在FOR循环中加入页面设置代码(emmm....这个页面设置代码可以录)。
4.还没想好,以后再说。
Option Explicit
Sub 批量打印()
If MsgBox("是否一键打印当前目录下所有表?", vbYesNo + vbDefaultButton1 + vbInformation, "打印提示") = vbNo Then
Exit Sub
End If
Dim Wb_Out As Workbook
Dim Sht_Out As Worksheet
Dim i As Integer
Dim MyPrtr As String
Dim File_Name As String
If Application.Dialogs(xlDialogPrinterSetup).Show Then '选择打印机
MyPrtr = Application.ActivePrinter
End If
Application.ScreenUpdating = False
File_Name = Dir(ThisWorkbook.Path & "\*.xlsx") '指定文件类型为xlsx
Do While File_Name <> ""
Set Wb_Out = Workbooks.Open(ThisWorkbook.Path & "\" & File_Name)
For i = 1 To Wb_Out.Sheets.Count
Set Sht_Out = Wb_Out.Worksheets(i)
'可添加打印页面设置内容
Sht_Out.PrintOut ActivePrinter:=MyPrtr '发送到打印机
Next i
Wb_Out.Save
Wb_Out.Close
File_Name = Dir
Loop
End Sub
评论(0)