打开Excel文件时VBA挂起

时间:2016-09-14 13:57:53

标签: excel vba

我有一个循环浏览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”变量上时,它仍然是真的?

1 个答案:

答案 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