Excel 在文件夹中循环并运行代码并不总是有效
我使用下面的代码循环遍历目录中的所有文件夹并执行某些任务。在这种情况下,任务是(i)刷新活动工作簿和(ii)删除所有工作簿连接Excel 在文件夹中循环并运行代码并不总是有效,excel,vba,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.GetFo
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
要从工作簿中删除所有连接,程序将遍历所有文件,但什么也没有发生,即,应该删除的连接保留在工作簿中。值得注意的是,如果从工作簿本身启动,此代码将按预期执行,从而删除调用工作簿中的连接
为什么在文件夹中循环时删除连接的代码不起作用?你知道我做错了什么吗?如果你设置了
wb
,为什么要使用activeworkbook
?我想我知道是什么。比方说。Count返回2个连接。项在.Items(0)和.Items(1)中具有这些连接。只需尝试切换到ActiveWorkbook.Connections.Item(ActiveWorkbook.Connections.Count-1)。删除如果有效,请告诉我,我会将其作为答案发布。我这里没有Excel来尝试它myself@CyberClaw如果只剩下最后一个连接,但OP似乎说没有一个连接被删除,这是有道理的?不,他总是删除“计数连接”。问题是,计数从1到X(0表示无),项目从0到X-1(因为0已经是一个位置)@findwindow-这只是一个例子。你说得对。如果你设置了wb
,为什么要使用activeworkbook
?我想我知道它是什么。比方说。Count返回2个连接。项在.Items(0)和.Items(1)中具有这些连接。只需尝试切换到ActiveWorkbook.Connections.Item(ActiveWorkbook.Connections.Count-1)。删除如果有效,请告诉我,我会将其作为答案发布。我这里没有Excel来尝试它myself@CyberClaw如果只剩下最后一个连接,但OP似乎说没有一个连接被删除,这是有道理的?不,他总是删除“计数连接”。问题是,计数从1到X(0表示无),项目从0到X-1(因为0已经是一个位置)@findwindow-这只是一个例子。你说得对。