使用 Access 2010、WinXP。我正在尝试遍历文件夹集合,从每个文件夹中的每个 Excel 文件中收集值以添加到我的数据库中的表中。问题是,即使我每次都关闭工作簿,它也一定不能足够快地关闭,因为如果相同的文件名出现在两个连续的文件夹中,我会收到一条错误消息:
Run-time error '1004':
A document with the name 'someWorkbook.xls' is already open.
这是我的代码:
sub traverse()
Dim fso As filesystemobject
Dim fObj As File
Dim fldObj As Folder
Dim fCol As Files
Dim xlApp As Excel.Application
dim xlBk as Excel.Workbook
Set xlApp = New Excel.Application
Set fso = New filesystemobject
For Each fldObj In fso.GetFolder("c:\basePath").SubFolders
Set fCol = fldObj.Files
For Each fObj In fCol
If UCase(Left(fso.GetExtensionName(fObj.Name), 3)) = "XLS" Then
Set xlBk=xlApp.workbooks.open(fObj.path)
getData(xlBk)
xlBk.close false
DoEvents
End If
Next
Next
End Sub
我尝试退出 Excel 实例并在循环中启动一个新实例For Each fObj
,如下所示:
set xlApp=new Excel.Application
Set xlBk=xlApp.workbooks.open(fObj.path)
getData(xlBk)
xlBk.close false
DoEvents
xlApp.quit
DoEvents
但这只会打开一大堆 Excel 实例而没有退出它们,因为当它崩溃时,我检查了任务管理器并找到了大约 30 个 Excel 实例。
我还能做些什么来保证我的代码在 Excel 操作触发.Close
或.Quit
完成之前不会继续执行?