我正在使用以下代码遍历目录中的所有文件夹并执行某些任务。在这种情况下,任务是(i)刷新活动工作簿和(ii)删除所有工作簿连接。
Sub LoopThroughFolders()
Application.DisplayAlerts = False
Dim FSO As Scripting.FileSystemObject
Dim FF As Scripting.Folder
Set FSO = New Scripting.FileSystemObject
Set FF = FSO.GetFolder("C:\...\") 'Change directory as appropriate
PerformTasks FF
Application.DisplayAlerts = True
End Sub
Sub PerformTasks(FF As Scripting.Folder)
Dim F As Scripting.File
Dim SubF As Scripting.Folder
Dim WB As Workbook
For Each F In FF.Files
Set WB = Workbooks.Open(F.Path)
'CODE GOES HERE
WB.Close SaveChanges:=True
Debug.Print F.Name
Next F
For Each SubF In FF.SubFolders
PerformTasks SubF
Next SubF
End Sub
如果我用
替换相应的行ActiveWorkbook.RefreshAll
或等效过程,根文件夹中的所有工作簿都按预期刷新。但是,当我尝试代码时
Do While ActiveWorkbook.Connections.Count > 0
ActiveWorkbook.Connections.Item(ActiveWorkbook.Connections.Count).Delete
Loop
要删除工作簿中的所有连接,程序将遍历所有文件,但没有任何反应,即应该删除的连接仍保留在工作簿中。值得注意的是,如果从工作簿本身启动,删除调用工作簿中的连接,此代码将按预期执行。
为何在循环浏览文件夹时删除连接的代码不正确?我有什么想法吗?