前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ExcelVBA学习之一键打印文件夹中的所有Excel文件

ExcelVBA学习之一键打印文件夹中的所有Excel文件

作者头像
哆哆Excel
发布2022-10-25 11:10:54
2.7K0
发布2022-10-25 11:10:54
举报
文章被收录于专栏:哆哆Excel

【问题】要打印的Excel文件有几百个,格式有2003版本的也有2016版本的,全部都打印第一个sheet1工作表就可以啦,(如果所在的sheet工作都要打印呢?)。

【常规做法】“打开~打印~关闭~不保存”,再“打开~打印~关闭~不保存”,几十个文件还可以,几百个就~~~~~~~~天啊。 ==要在代码中调整文件夹版本==

Sub 批量打印()    ‘本方法不要把“控制文件.xlsm”放在要打印的文件夹里,

      Dim file$, folder$, wb As Workbook

      folder = "G:\test\" ‘在这里调整你要打印的文件夹

      file = Dir(folder & "*.xls*")

      Do While file <> ""

             Set wb = GetObject(folder & file)

             wb.Worksheets(1).PrintOut

wb.Close SaveChanges:=False

 file = Dir

 Loop

End Sub

==本方法要把主控制文件放在文件夹中==

Sub 打印()   ‘。    Dim myPath$, myFile$, AK As Workbook, aRow%, tRow%, C As String, i As Integer    'Application.ScreenUpdating = False        '冻结屏幕,以防屏幕抖动    myPath = ThisWorkbook.Path & "\"     '把文件路径定义给变量    myFile = Dir(myPath & "*.xls*") '依次找寻指定路径中的*.xls文件    C = "sheet1"  ’要打印的工作表的名称    t = Timer    Do While myFile <> ""                     '当指定路径中有文件时进行循环       If myFile <> ThisWorkbook.Name Then          Set AK = Workbooks.Open(myPath & myFile)          '打开符合要求的文件          AK.Worksheets(1).PrintOut       '打印          Workbooks(myFile).Close False               '关闭源工作簿,并不作修改       End If       myFile = Dir                                   '找寻下一个*.xls文件    Loop    'Application.ScreenUpdating = True                 '恢复刷新屏幕    MsgBox "打印输出完毕! 所用时间为:" & Timer - t & " 秒", 64, "提示" End Sub

=====可选择文件夹版本====

Sub p1()

    Dim lj, wb As Workbook

    Set objShell = CreateObject("Shell.Application")

    Set objFolder = objShell.BrowseForFolder(0, "选择文件夹", 0, 0)

    If objFolder Is Nothing Then

        MsgBox "未选择文件夹"

        Exit Sub

    End If

    lj = objFolder.self.Path

    If Right(lj, 1) <> "\" Then

        lj = lj & "\"

    End If

    Set objFolder = Nothing

    Set objShell = Nothing

    myFile = Dir(lj & "*.xls*")

    While myFile <> ""

        Set wb = Workbooks.Open(lj & myFile)

        '这里放入打印设置代码,可通过录制宏来自动生成,然后拷贝到此处

         wb.Worksheets(1).PrintOut

        wb.Close False

        myFile = Dir

    Wend

End Sub

==每个Excel文件需要打印里面所有的sheet工作表==

Sub 打印文件夹下所有文件所有工作表() 'On Error Resume Next Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Application.ScreenUpdating = False '关闭屏幕刷新 Application.DisplayAlerts = False '关闭提示     If MsgBox("需要操作的数据表是:EXCEL2003 格式,请选择:是!" & Chr(13) & "" & Chr(13) & "需要操作的数据表是:EXCEL2007 格式,请选择:否!", vbYesNo, "提示!!") = vbYes Then        S = "\*.xls"        ss = 4     Else        S = "\*.xlsx"        ss = 5:     End If t = Timer '记录开始时间     f = Dir(ThisWorkbook.Path & S) '生成查找EXCEL的目录     n = 2 '开始记录工作簿名和工作表名的开始行     Do While f > " "   '在目录中循环         If f <> ThisWorkbook.Name Then   '如果不是打开的工作簿             Set xlBook = Workbooks.Open(ThisWorkbook.Path & "\" & f) '打开已经存在的EXCEL工件簿文件             For Each sh In xlBook.Worksheets '遍历工作表                   '    sh.PrintPreview  '打印预览,可以取消的                      sh.PrintOut Copies:=1, Collate:=True '开始打印                       Windows(ThisWorkbook.Name).Activate '回到操作主表界面             Next                Windows(f).Close (False)   '关闭工作簿,不保存          End If         f = Dir     Loop Application.ScreenUpdating = True Application.DisplayAlerts = True MsgBox "一共用时:" & Timer - t & " 秒", , "提示!" End Sub

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-08-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 哆哆Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档