如何逐个打开所有的Excel文件并运行宏?

6

我需要在VBA中编写一个宏,逐个打开给定目录中的每个文件,并对它们运行一个宏。

到目前为止,我有类似以下的代码:

for i = 1 to number_of_files
    open Dir("C:\yourPath\*.*", vbNormal)
    call some_macro
    close file
next i

3
你已经开始了吗?你目前有哪些代码?宏是否存在于每个工作簿中,还是你试图对其他工作簿执行一个工作簿内的宏? - Jay
宏只存在于一个工作簿中。 - Alex Gordon
2个回答

11
通过使用适当的筛选器,例如"c:\folder\*.xls",调用Dir()函数,开始枚举并获取第一个文件名。之后,反复调用没有任何参数的Dir()函数,您将获得每个调用的一个*.xls文件名。
通过调用Workbooks.Open(full_path)打开工作簿。这会为您提供一个Workbook对象,可以对其运行宏。
Workbook对象的.Close()方法关闭工作簿。 您可以使用.Close(SaveChanges:=True)保存更改,.Close(SaveChanges:=False)放弃更改,或省略参数让用户决定。

0

这是使用简单的VBA对象方法来完成它的方式:

Dim fs As FileSearch
Dim i As Integer
Dim wbk As Workbook

Set fs = Application.FileSearch

With fs
    .LookIn = ThisWorkbook.Path
    .FileName = "*.xls"
    For i = 1 to .Execute()
        Set wbk = Workbooks.Open(.FoundFiles(i))
        ''//RUN MACRO HERE
        wbk.Close(SaveChanges:=True)
    Next i
End With

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接