如何逐个打开所有excel文件并运行宏

时间:2010-07-30 20:33:21

标签: vba file-io

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

到目前为止,我有类似

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

2 个答案:

答案 0 :(得分:11)

通过使用适当的过滤器(例如Dir())调用"c:\folder\*.xls"函数,可以启动枚举并获取第一个文件名。
之后,在没有任何参数的情况下反复调用Dir()函数,您将获得所有*.xls个文件名,每个调用一个。

通过调用Workbooks.Open(full_path)打开工作簿。这会为您提供一个Workbook对象,您可以根据该对象运行宏。

.Close()对象的Workbook方法关闭工作簿。您可以使用.Close(SaveChanges:=True)保存更改,.Close(SaveChanges:=False)放弃更改,或省略参数以让用户自行决定。

答案 1 :(得分:-1)

这是简单的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