2016-01-24 55 views
1

一些非常規現象開始影響我的宏。我有一個比較大的(13MB)excel工作簿。 ThisWorkbook.Save工作得很好。花費10秒來保存工作簿(沒有任何數據更改)。現在需要2分鐘。 ThisWorkbook.Close SaveChanges:=True也一樣。我在Windows 7上使用Excel 2010通過VBA在Excel中保存時間過長

奇怪的是,我可以在沒有任何問題的情況下手動保存工作簿,如CTRL+S或在Excel菜單中使用Save icon。這樣保存程序的時間不到10秒,就像我的代碼用來做這件事一樣。

這種不必要的延遲的發生真的纏着我。你有沒有這方面的經驗?我正在尋找提示來解決問題。


編輯:

我已經改爲xlsb格式被告知,去一點點進一步的測試。有些情況下,當節約時間看起來appropiate:

  • 在很多張是重要的數據變化(48S)
  • Save命令從新建module觸發沒有任何其他變化(5S)
  • 我所有的圖表(150個)都被刪除(1s)。顯然,每張圖表都會給節省時間多出1秒。我知道,我應該使用一個動態的,但該死的標籤錯誤...而且之前完全沒有問題!

編輯2:

問題今天已經消失。 Save命令再次正常工作,保存只需幾秒鐘。不知道是什麼引起了這個問題,但我擔心它會回來,並且會再次影響我的宏觀。 Excel絕對是古怪的!

+2

我強烈建議xlsb格式,如果你有大的excel文件。看這個; http://stackoverflow.com/questions/7821632/when-should-the-xlsm-or-xlsb-formats-be-used –

+0

我給它一個嘗試,它已經大大減少了文件的大小(從13.3到10.7MB, -20%)。儘管它沒有改變節省時間的長度。它需要大約130秒,就像'xlsm'一樣,而'CTRL + S'手冊就像一個魅力。但我從現在開始肯定會使用'xlsb'。謝謝你的提示! – Bernat

+0

也許:ActiveWorkbook.Save –

回答

1

由於手動CTRL+S作品,我跟SendKey方法去,直到有更好的解決方案。它的執行速度比Save命令快得多。像這樣的錯誤只會殺死我......

ThisWorkbook.Activate 
SendKeys "^s" 
DoEvents 
ThisWorkbook.Close 
+0

我很驚訝,這有所作爲,但有時候Excel很古怪。很高興知道爲什麼從VBA存儲創建一個瓶頸在你的情況。 –

+0

我剛剛測試了32 MB xlsb文件,比較Ctrl + S和ThisWorkbook.Save。結果是沒有差異!對不起,祝你好運。 –

+0

感謝您的支持! – Bernat

0

這樣怎麼樣?

Sub Macro1() 

Application.ScreenUpdating = False 
Application.EnableEvents = False 
Application.Calculation = xlCalculationManual 

ThisWorkbook.Save 

Application.ScreenUpdating = True 
Application.EnableEvents = True 
Application.Calculation = xlCalculationAutomatic 

End Sub 
+0

不幸的是,它也沒有幫助。 :/ – Bernat