用VBA自动操作目录下所有Excel文件 | 您所在的位置:网站首页 › vba文件夹复制 › 用VBA自动操作目录下所有Excel文件 |
昨天发了一篇文章,演示如何修改一个录制宏成为一个通用宏。但是问题是即使这样还是需要手工打开每一个excel文件,再手动执行宏,效率还是不高。那么今天再接再厉,发一个一键完成同一目录下所有excel文件的统一操作宏代码。 先上一段代码,这段代码的作用是用来遍历目标文件夹中的所有excel工作簿,扩展名已经指定为.xlsx,所以如果你把你的宏工作簿放到同一文件夹下也不用担心被一起“操作”了,因为宏工作簿的扩展名是.xlsm。 每一句代码的作用都解释的很清楚,就不多说什么了。 好了,如果现在你直接调用上一篇文章里的宏,直接执行,你会发现虽然所有excel文件都被正确的透视了,但是.....所有文件都是呈打开状态。几十甚至几百个excel文件同时被打开,向上帝祈祷你的电脑还活着吧...... 为了不要出现这种尴尬的情况,我们需要在具体操作宏中加入代码,每操作完毕一个工作簿就自动保存并关闭。 用这个: ActiveWorkbook.Save ActiveWindow.Close好了,到目前为止,我们已经把整个代码写完了,赶快执行一下看看效果吧。 附上可以直接复制的代码: Sub key() Dim Path As String Dim File As String Dim WB As Workbook Application.ScreenUpdating = False '冻结屏幕,打开各个文件及关闭时屏幕不会晃瞎你的狗眼 Path = "c:\temp\" '把目标文件夹路径赋值给变量,这里的路径可以自己改 File = Dir(Path & "*.xlsx") '一次找寻路径中的excel文件,这里到底是.xlsx还是.xls,可以自己改 Do While File "" '当指定路径中由文件时进行循环 Set WB = Workbooks.Open(Path & File) '打开符合要求的文件 Call 你的具体操作宏 '调用你的另一端对每个excel文件进行具体操作的宏,也可以直接写到这个宏中 File = Dir '找寻下一个excel文件 Loop Application.ScreenUpdating = True '解冻屏幕,让屏幕恢复正常刷新。和上面的那一句成对使用 End Sub |
CopyRight 2018-2019 实验室设备网 版权所有 |