Excel中崩溃时,检查在未修改的Excel工作簿与VBA
我工作的一个vba项目基本上是这样的: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
命令后,没有运气...
这到底是怎么回事?有人能指引我朝着正确的方向吗?
当没有改变时(workbookVariable.saved = true
)使用workbookVariable.CheckIn(False)
。您不希望CheckIn
版本与原始版本完全相同。至少浪费空间。这应该丢弃你的“CheckOut”。请参阅MSDN。
感谢this page指出本来应该是显而易见的。
好奇心的最后一点:为什么要检查工作簿,而不要对其进行更改?
事实证明,我最终没有检查出来,而是检查了文件锁。我检查它的主要原因是宏__ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ m _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ m _ – 2013-02-12 06:24:43
顺便说一句,我尝试了workbookVariable.checkIn False(没有括号),但是也崩溃了。 – 2013-02-12 06:27:11
也许每次您可以尝试保存以查看问题是否仍然存在。尽管您可能不会对文件进行任何修改。 – bonCodigo 2013-02-10 12:10:34
事实上,我做了测试,并解决了问题;尽管这不是我实际打算去的方式。 – 2013-02-10 22:17:41
没错,它只是一个*掩盖*,不能解决真正的问题;) – bonCodigo 2013-02-11 05:52:42