我有一个循环浏览Excel文件路径列表的宏。宏将读取每个路径,打开工作簿,从每个工作簿中复制/提取数据,然后将数据值粘贴到中央工作簿中。大约有2000个文件路径。
过了一段时间(也许是在它循环了前70个左右的文件路径之后),Excel挂起。它显示打开文件时获得的“下载”消息框。如果我在msg框中单击取消,则工作簿将打开,宏将继续正常。
我必须坐在这里1000个文件路径。为什么Excel会被困在这里?有办法吗?
此消息框不会发生在每个Workbooks.Open实例上,就在每几个实例之后。
代码示例:
With ThisWorkbook.Sheets("Filepaths")
For i = firstrow To lastrow
SourceFile = .Cells(i, 1).Value
Workbooks.Open SourceFile, ReadOnly:=True
Set MyFile = Workbooks(Workbooks.Count)
' ..more code..........
' ..more code..........
' ..more code..........
MyFile.close
Next i
End With
感谢您的评论。这些都是好点(并且我认为我过去曾尝试过两种解决方案)。但只是为了检查,我修改了我的Workbooks.Open行:
Application.DisplayAlerts = False
Workbooks.Open SourceFile, ReadOnly:=True, UpdateLinks:=False
Application.DisplayAlerts = True
但消息框仍然弹出。
当我一步一步地走过Application.DisplayAlerts = False
线后,当我将鼠标悬停在“Application.DisplayAlerts”变量上时,它仍然是真的?
答案 0 :(得分:0)
好像你正试图从共享驱动器打开一个文件,这就是为什么它会向你显示" 正在下载"消息框。这有时会发生。
在这种情况下, Application.DisplayAlerts = False
无济于事。 ReadOnly:=True, UpdateLinks:=False
也不会帮助。
尝试此代码(未经测试)
With ThisWorkbook.Sheets("Filepaths")
For i = firstrow To lastrow
SourceFile = .Cells(i, 1).Value
'~~> Check for network path and use sendkeys
'~~> to close the downloading window
If InStr(1, SourceFile, "\\") Then _
Application.SendKeys "~", True
Workbooks.Open SourceFile, ReadOnly:=True
Set MyFile = Workbooks(Workbooks.Count)
'..more code..........
'..more code..........
'..more code..........
MyFile.Close
Next i
End With