用VBA自动操作目录下所有Excel文件

用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

编辑于 2018-11-13

文章被以下专栏收录

    在这个专栏,希望能够将我在连锁零售行业多年的工作经验以及一些其他有趣的想法记录下来,并且分享给乐于倾听的你