我有一个VBA程序需要对不同路径下的多个excel文件中都运行一次,如何自动实现。
我有一个VBA程序需要对不同路径下的多个excel文件中都运行一次,如何自动实现。比如:C:\DocumentsandSettings\桌面\汇总\1\1.xlsxC:\...
我有一个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宏会提示代码量太大无法运行。 展开
比如:
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宏会提示代码量太大无法运行。 展开
3个回答
展开全部
把这些文件的清单放在工作表里面,例如放在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()
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) = "执行成功。"
你的宏执行出错的时候,要看错误语句和错误代码,写得不兼容的地方需要修改。
展开全部
首先你不要将文件的路径写死,可以按照你自己的意愿打开所要执行的文件,然后直接调用你所说的Sub 文件().............End Sub,这样就可以了啊,这样Sub程序只需要写一次就可以了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用FSO循环文件夹及子文件夹,手机没办法帮你写,提供思路而已
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询