2013-02-10 74 views
5
到SharePoint

我工作的一個項目基本上是這樣的:Excel中崩潰時,檢查在未修改的Excel工作簿與VBA

if workbooks.canCheckOut(filename) = true then  
    workbooks.CheckOut(filename) 
    set workbookVariable = workboooks.Open(filename) 
else  
    ' Pesudocode: Display error message 
    '    Quit 
end if 

' Pseudocode: Do some stuff with workbookVariable.  
If workbookVariable.saved = false then  
    workbookVariable.save 
end if 

If workbookVariable.canCheckIn then  
    workbookVariable.checkIn 
    Set workbookVariable = Nothing 
else  
    msgbox "Error message goes here", vbCritical 
end if  
' Pseudocode: quit 

(編輯:我有「如果workbookVariable.Saved =真」;這是不正確的。如果它已經保存沒有意義的保存文件...所以這是現在更新,以反映我真的有什麼。)

如果工作簿被修改並得到保存,一切運行良好。它會保存並重新檢入SharePoint,並且程序正常結束。

但是,如果工作簿沒有得到修改,當它回到程序的部分檢查時,excel崩潰,並且我收到一條錯誤消息:「自動化錯誤」。

我甚至試圖把處於等待命令checkIn命令後,沒有運氣...

這到底是怎麼回事?有人能指引我朝着正確的方向嗎?

+1

也許每次您可以嘗試保存以查看問題是否仍然存在。儘管您可能不會對文件進行任何修改。 – bonCodigo 2013-02-10 12:10:34

+1

事實上,我做了測試,並解決了問題;儘管這不是我實際打算去的方式。 – 2013-02-10 22:17:41

+0

沒錯,它只是一個*掩蓋*,不能解決真正的問題;) – bonCodigo 2013-02-11 05:52:42

回答

0

當沒有改變時(workbookVariable.saved = true)使用workbookVariable.CheckIn(False)。您不希望CheckIn版本與原始版本完全相同。至少浪費空間。這應該丟棄你的「CheckOut」。請參閱MSDN

感謝this page指出本來應該是顯而易見的。

好奇心的最後一點:爲什麼要檢查工作簿,而不要對其進行更改?

+0

事實證明,我最終沒有檢查出來,而是檢查了文件鎖。我檢查它的主要原因是宏__ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ m _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ m _ – 2013-02-12 06:24:43

+0

順便說一句,我嘗試了workbookVariable.checkIn False(沒有括號),但是也崩潰了。 – 2013-02-12 06:27:11