循环文件夹和运行代码并不总是有效

时间:2016-03-04 17:12:28

标签: excel vba

我正在使用以下代码遍历目录中的所有文件夹并执行某些任务。在这种情况下,任务是(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

要删除工作簿中的所有连接,程序将遍历所有文件,但没有任何反应,即应该删除的连接仍保留在工作簿中。值得注意的是,如果从工作簿本身启动,删除调用工作簿中的连接,此代码将按预期执行。

为何在循环浏览文件夹时删除连接的代码不正确?我有什么想法吗?

0 个答案:

没有答案