后台最近有朋友留言说,经常会有好多excel工作簿要打印,挨个点击打开,然后选择打印非常的麻烦。有没有办法可以用vba一键批量的打印?
当然可以,其实方法有两种:
1 直接通过VBA代码一键批量打印
举个栗子更直观一些,如下图
book1工作簿下有a、b、c三个工作表
book2工作簿下有sheet1、sheet2、sheet3三个工作表
将这两个文件放在同一个文件夹内,再新建一个excel文件,叫“一键批量打印”。
然后VBE中(开发工具-Visual Basic),输入下面的代码,保存运行即可。
Sub 打印指定文件()
Dim iPath$, iName$, Wb As Workbook
Dim i
iPath = ThisWorkbook.Path & "\"
iName = Dir(iPath & "*.xls*")
On Error Resume Next
Do While iName <> ""
If iName <> ThisWorkbook.Name Then
Set Wb = Workbooks.Open(iPath & iName)
For i = 1 To Wb.Worksheets.Count
Wb.Worksheets(i).PrintOut
Next
Wb.Close False
End If
iName = Dir
Loop
End Sub
看效果,因为永恒君电脑没有连接打印机,用的是虚拟打印机,模拟打印成pdf格式的文档了,和打印机打印的原理是一样的。
这里有一点是要注意的,打印的表格的排版要事先调好,代码并没有设置格式,都是按表格原有的排版进行打印。
2 把所有工作簿批量合并后再打印
这个方法要用到之前介绍的合并工作簿的方法:Excel vba 实例(3) - 多个工作簿批量合并
把所有的工作簿的表格全部合并到一起,再打印整张工作簿即可。如下图演示:
这个变通的办法也是不错的。
同样的,永恒君直接把上面实例VBA的文件分享出来,需要的就直接使用吧。
后台回复“打印”即可。
不少人对VBA代码有抵触心理,其实没有那么复杂,把他看成一个稍微复杂点的函数即可。
当然如果并不打算深入学习VBA,只是临时使用下,那只要会复制黏贴就好了!
至于怎么用VBA代码,可以参考之前的文章:
Excel vba 实例(2) - 批量将工作表拆分为单独文件
Excel vba 实例(4) - 根据已有名称,批量新建表格
Excel vba 实例(5) - 快速合并n多个相同值的单元格
Excel vba 实例(6) - 一键汇总多个sheet数据到总表
Excel VBA功能很强大,但是要熟练的运用起来还是有一定的难度,好在永恒君帮大家搜集了几套关于VBA的视频教程,非常的实用。
需要的话,后台回复“VBA”获取吧~~
欢迎交流!
微信公众号:永恒君的百宝箱
个人博客:www.yhjbox.com
转载请注明:永恒君的百宝箱 » Excel vba 实例(7)-一键批量打印工作簿