Excel中崩溃时,检查在未修改的Excel工作簿与VBA

Excel中崩溃时,检查在未修改的Excel工作簿与VBA

问题描述:

到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

当没有改变时(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