如何用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\\桌面
\\材料\\\" + i.Name + \"\")
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带的“搜索”功能找到大文件夹内的所有文件,再复制。
因篇幅问题不能全部显示,请点此查看更多更全内容