我需要在VBA中编写一个宏,它将逐个打开给定目录中的每个文件,并在它们上运行一个宏。我该如何打开所有的excel文件并运行一个宏
到目前为止,我还像
for i = 1 to number_of_files
open Dir("C:\yourPath\*.*", vbNormal)
call some_macro
close file
next i
我需要在VBA中编写一个宏,它将逐个打开给定目录中的每个文件,并在它们上运行一个宏。我该如何打开所有的excel文件并运行一个宏
到目前为止,我还像
for i = 1 to number_of_files
open Dir("C:\yourPath\*.*", vbNormal)
call some_macro
close file
next i
通过调用Dir()
功能与适当的过滤器,如"c:\folder\*.xls"
,你开始计数并获得的第一个文件名。
之后,不带任何参数反复调用Dir()
函数,您将获得所有*.xls
文件名,每个调用一个。
您可致电Workbooks.Open(full_path)
打开工作簿。这给你一个Workbook
对象,你可以运行一个宏。
Workbook
对象的.Close()
方法关闭工作簿。您可以使用.Close(SaveChanges:=True)
保存更改,.Close(SaveChanges:=False)
放弃更改,或者省略用户决定的参数。
如何关闭该文件? – 2010-07-30 20:49:24
通过调用'.Close()'。 – GSerg 2010-07-30 21:03:29
下面是简单的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
这仅适用于Excel 2003及更低版本。 – Patrick 2012-06-29 16:29:16
你开始了吗?你目前有什么代码?宏是否驻留在每个工作簿中,还是您试图在一个工作簿中针对其他人执行宏? – Jay 2010-07-30 20:36:10
该宏只在ONE工作簿中 – 2010-07-30 20:37:16