2016-09-14 177 views
0

我有一個宏,它通過excel文件路徑列表循環。宏將讀取每個路徑,打開工作簿,從每個工作簿中複製/提取各種數據,然後將數據粘貼到中央工作簿中。有大約2000個文件路徑需要循環訪問。正如你所看到的,這是一個非常簡單的宏。它運行得很好。但是,運行一段時間(也許在通過前70個文件路徑循環後),excel會一直掛在我身上(它顯示打開文件時出現的「下載」消息框)。如果我單擊msg框上的取消,工作簿仍然打開並且宏按正常方式繼續。但隨着這些「下載」消息框不斷彈出,我將不得不坐在這裏,爲超過1000個更多的文件路徑保留宏。有誰知道爲什麼excel卡在這裏?有沒有辦法解決它?打開excel文件時VBA掛起

甚至更​​奇怪的是,這個懸掛的消息框並不會發生在每個Workbook上。打開實例,它只發生在每隔幾個。

這裏是我使用的代碼示例:

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

(而你在它和'ScreenUpdating')也許關掉'Application.DisplayAlerts'會有所幫助。 –

+0

你不能'Application.DisplayAlerts = False'? – Tyeler

+2

某些工作簿中可能無效的外部鏈接? –

回答

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 
+0

是的,它來自共享驅動器。但是,所有用戶PC上的所有路徑都是映射驅動器(O:\驅動器)。我正在玩SendKeys代碼(但不能說我完全理解它)。無論如何。我一直在玩的SendKeys代碼似乎工作得更好。但我似乎仍然得到偶爾的「下載」味精盒掛斷,但只是不經常... – ActuaryGuy

+0

替換'「\\」'用'「O:\」' –

+0

謝謝。這導致奇怪的事情發生...像宏有時停止並打開Workbooks.Open行上的調試窗口,或宏在application.sendkeys行之後或workbooks.open行之後插入其他空白行... – ActuaryGuy