2013-04-05 104 views
0

我在Excel中有一個用戶表單,用戶在其中輸入信息,然後點擊「添加股票」按鈕。按下此按鈕後,信息將輸入到電子表格中,然後電子表格將保存爲「ActiveWorkbook.Save」。Excel崩潰,VBA用戶表單無法保存

問題是,工作電腦老了,Excel有崩潰的傾向。當電子表格被autorecovered,添加股票功能不再起作用,它崩潰與代碼75錯誤。看來ActiveWorkbook.Save在這種情況下不起作用,直到用戶手動點擊CTRL-S。老闆堅持認爲,我們的用戶不夠精通計算機,因此我需要以某種方式檢查Excel是否崩潰,如果是這樣,自動保存文件才能開始使用它。

如何檢查我們是否處於自動恢復狀態,然後保存它(沒有ActiveWorkbook.Save),以便用戶可以繼續使用該表單而沒有問題?非常感謝。

+0

VBA錯誤75是文件/路徑訪問錯誤,通過崩潰您的意思是VBA暫停?如果是這樣,請在存儲方法周圍添加錯誤處理 – 2013-04-05 11:26:40

+0

否,Excel有整個崩潰的習慣,整個應用程序強制重新啓動,然後自動恢復過程。 – user2151763 2013-04-05 11:32:28

+0

而這與用戶表單是否在使用中無關。 – user2151763 2013-04-05 11:33:15

回答

0

我找不到一個直接的方法來檢查這個,但這裏有幾個kludgy選項。看起來如果有兩個狀態,一個Autorecovered工作簿可以在其中的工作簿:最後由用戶保存或自動保存。標題反映它處於哪個狀態。此功能將檢查標題中是否存在該短語。

Public Function IsInAutoRecoverMode(wb As Workbook) 

    Dim wn As Window 

    Set wn = wb.Windows(1) 

    IsInAutoRecoverMode = _ 
     wn.Caption Like "*[Autosaved]?" Or _ 
     wn.Caption Like "*[Last saved by user]?" 

End Function 

我不知道如果有更多的國家,僅僅這一點,這肯定會失敗在非英語環境中,所以請謹慎使用。

上次由用戶保存時,Workbook.Path屬性是存儲文件的位置。自動保存時,Workbook.Path屬性等於Application.AutoRecover.Path。那麼,他們在我的機器上是平等的。這可能只是一個巧合,但我懷疑它。

由於用戶路徑最後保存的內容不具有獨特性,因此無法使用它來確定您是否處於自動恢復模式。但是,如果用戶打開自動保存的工作簿,則可能不想保存,而是將其另存爲正確的位置。您可能需要使用這兩種技術才能獲得所需的解決方案。

確保你告訴你的老闆,這些解決方法因爲你非常勤奮和具有創造性,但他們沒有記錄,並可能在任何時候失敗。至少,我不會理解他們是基於一些猜測而使用他們。讓我們知道你最終會得到什麼。