如何用Excel VBA批量打印文件
有时候一个文件夹内有很多Excel文件,几十个,上百个,如果一个个的打开,然后再打印,显然重复劳动,效率低下。
能不能用Excel VBA批量打印同一文件夹内的所有文件?
答案当然是肯定的。
假设我们的桌面上有个名叫“材料”的文件夹,内有上百个EXCEL文件需要打印
打开EXCEL文件→Visual Basic编辑器(Alt+F11)→插入→模块
以下是VBA代码
********************************************************************* **
Sub test()
Set rrr = CreateObject("Scripting.FileSystemObject")
Set r = rrr.GetFolder("C:\Documents and Settings\Administrator\桌面\材料")
For Each i In r.Files
Workbooks.Open Filename:=("C:\Documents and Settings\Administrator\桌面\材料\" + + "")
ActiveSheet.PageSetup.PrintArea = ""
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
ActiveWindow.Close saveChanges:=False
Next
End Sub
********************************************************************* **************
注释:ActiveSheet.PageSetup.PrintArea = "" 的目的是“取消打印区域”
因为有时候这些excel文件并不是我们自己写得,可能已经被别人设定好了打印区域,并保存在文件中,这是我们所看不到的。
(好比方所,其中某个文件的主人由于需要,设定从Excel表的5行到第10行为打印区域,但是我们并看不到。
当我们点击“文件”-->打印,把材料打印出来时,才发现打印的并不是整张表格,而是别人设定的打印区域,这显然不符合我们的要求,所以我们要取消打印区域)。
附:如果先是存在多级目录,大文件夹套很多小文件夹,小文件夹里装的才是文件,怎么办?
解:以大文件为根目录,把此根目录下的所有文件拷贝到同一文件夹内再进行操作。
可以用Windows带的“搜索”功能找到大文件夹内的所有文件,再复制。