我正在使用代码打开以特定前缀开头的文件夹中的所有文件:
folder = "C:\Users\xxx\Documents\Exception Reports\"
pref = "blah blah prefix"
file = pref & "*.xls"
exPath = folder & file
filename = Dir(exPath)
Do While filename <> ""
Workbooks.Open (filename)
...
Workbooks(filename).Close SaveChanges:=False
filename = Dir()
Loop
第一次打开宏后运行代码时,我收到“抱歉,我们找不到-filename-。是否有可能被移动,重命名或删除?”但是-filename-它打印的是我想要它打开的那个,我所指定的是我想要的前缀和文件扩展名,所以在我看来,如果它知道完整的文件名就会发现它很好。此外,如果我在声明文件名变量和启动Do While循环之间放入一个消息框,则消息框将打印出我希望它打开的正确文件名。
如果我将新文件保存到文件夹中并将其命名为“AA.xls”,然后让程序循环遍历文件夹(而不是指定前缀),然后返回并指定前缀,它工作正常,并继续工作,直到我关闭程序并重新打开,进程从头开始。但是,此过程仅在我将新文件保存到该文件夹时才有效。如果我尝试将“AA.xls”文件留在文件夹中,我会得到与其他文件一样的错误。
感谢您的任何意见!
答案 0 :(得分:0)
尝试使用CMD方法并查看是否遇到同样的问题,如果这样做,则很可能是权限问题:
Sub SO()
Const folder As String = "C:\Users\xxx\Documents\Exception Reports\"
Const pref As String = "blah blah prefix"
Dim file As String
Dim exPath As String
Dim fileName As Variant
file = pref & "*.xls": exPath = folder & file
For Each fileName In _
Filter(Split(CreateObject("WScript.Shell").Exec("CMD /C DIR """ & exPath & """ /B /A:-D").StdOut.ReadAll, vbCrLf), ".")
Workbooks.Open CStr(folder & fileName)
'// Do code here
Workbooks(fileName).Close False
Next fileName
End Sub