Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 在文件夹中循环并运行代码并不总是有效_Excel_Vba - Fatal编程技术网

Excel 在文件夹中循环并运行代码并不总是有效

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

我使用下面的代码循环遍历目录中的所有文件夹并执行某些任务。在这种情况下,任务是(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
要从工作簿中删除所有连接,程序将遍历所有文件,但什么也没有发生,即,应该删除的连接保留在工作簿中。值得注意的是,如果从工作簿本身启动,此代码将按预期执行,从而删除调用工作簿中的连接


为什么在文件夹中循环时删除连接的代码不起作用?你知道我做错了什么吗?

如果你设置了
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-这只是一个例子。你说得对。