我有一個VBA腳本,當用戶執行它時,它會打開並將新數據寫入網絡共享驅動器上的另一個文件。偶爾,腳本無法訪問該文件以向其寫入新數據,因爲其他人同時嘗試打開它(通過只讀通過它們具有的VBA腳本)。VBA無法打開文件時的備用信息
這個特定的文件打開錯誤沒有被捕獲到錯誤處理代碼中,並且出現一個框並要求用戶進行結束或調試。有沒有辦法提出一個類似「無法處理請求的替代彈出框」,請等待幾秒鐘,然後重試。
我有一個VBA腳本,當用戶執行它時,它會打開並將新數據寫入網絡共享驅動器上的另一個文件。偶爾,腳本無法訪問該文件以向其寫入新數據,因爲其他人同時嘗試打開它(通過只讀通過它們具有的VBA腳本)。VBA無法打開文件時的備用信息
這個特定的文件打開錯誤沒有被捕獲到錯誤處理代碼中,並且出現一個框並要求用戶進行結束或調試。有沒有辦法提出一個類似「無法處理請求的替代彈出框」,請等待幾秒鐘,然後重試。
是的。在文件打開代碼周圍進行錯誤處理。像這樣:
on error goto FileError
'file opening code
on error goto 0
exit sub
FileError:
msgbox("Could not process request. Please wait a few seconds and try again")
基本上,OnError告訴該語句後面的所有內容,以便在發生錯誤時執行您指定的任何操作。在這種情況下,我已經放入goto FileError
,所以如果在onError
處理將停止並且轉到標記爲FileError
的行後遇到任何錯誤。
然後OnError goto 0
禁用該錯誤句柄。如果其他代碼生成錯誤,則不會由FileError
句柄處理。 onerror的另一個選項是OnError Resume Next
,它使程序跳過產生錯誤的代碼。所以它不會拋出錯誤,它會繼續處理。
請注意FileError
標籤之前的Exit Sub
,這樣代碼將不會進入FileError標籤,除非它通過生成的錯誤發送到那裏。
[THIS](http://stackoverflow.com/questions/9373082/detect-whether-excel-workbook-is-already-open-using-vba/9373914#9373914)會讓你開始。 –
是的。顯示一些代碼笑我們可以幫助。 –
問題不在於它已經打開。這是當它試圖在兩個不同的人同時打開時。有一個碰撞正在進行。 – Josh