我有一个VBA程序需要对不同路径下的多个excel文件中都运行一次,如何自动实现。

我有一个VBA程序需要对不同路径下的多个excel文件中都运行一次,如何自动实现。
比如:
C:\Documents and Settings\桌面\汇总\1\1.xlsx
C:\Documents and Settings\桌面\汇总\5\3.xlsx
C:\Documents and Settings\桌面\汇总\11\9.xlsx
等几十个excel文件,需要执行程序
Sub 文件()
....................
End Sub
我需要在每个路径下的文件执行一次Sub 文件().............End Sub,但sub程序最好只写一次,不然excel宏会提示代码量太大无法运行。

把这些文件的清单放在工作表里面,例如放在A列,新写一个宏,例如:
sub xxx()
Set fs = CreateObject("Scripting.FileSystemObject")
'开始打开所有文件进行处理
for k=1 to 10

fName = Cells(k, 1)
If Not fs.FileExists(fName) Then '如果文件存在
MsgBox "文件(" & fName & ")不存在!"
Exit Sub
End If
Cells(k, 2) = "打开文件..."
Workbooks.Open Filename:=fName, ReadOnly:=True
call 文件'调用你的宏

ActiveWorkbook.Close SaveChanges:=False

next k
end sub追问

我的宏单独可以运行,但是把这段代码放到我代码的上面,形式如:
sub xxx()
end sub
sub 文件()
我的代码
end sub
结果显示下标越界,是不是因为我的宏中运行的时候要输入变量导致的?
Cells(k, 2) = "打开文件..." 这句是什么意思啊?是放我的文件的完成路径名吗?

我新建的工作表A列中只写文件名还是写完整路径加文件名。

追答

要使用完整的路径名称,Cells(k, 1)是文件名,就是A列 ,Cells(k, 2) = "打开文件..."是B列显示程序工作过程,执行完毕后还可以Cells(k, 2) = "执行成功。"

你的宏执行出错的时候,要看错误语句和错误代码,写得不兼容的地方需要修改。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-17
首先你不要将文件的路径写死,可以按照你自己的意愿打开所要执行的文件,然后直接调用你所说的Sub 文件().............End Sub,这样就可以了啊,这样Sub程序只需要写一次就可以了
第2个回答  2013-04-17
用FSO循环文件夹及子文件夹,手机没办法帮你写,提供思路而已
相似回答