这两天有个批量打印报表的需求,于是简单撸了几行代码。

使用说明:
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