检查Excel在使用VBA将未修改的Excel工作簿复制到SharePoint时崩溃

我正在做一个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 = True”;这是不正确的。如果已经保存文件没有意义的保存…所以这是现在更新,以反映我真的有。)

如果工作簿被修改并保存,一切运行良好。 它会保存并重新检入SharePoint,并且程序正常结束。

但是,如果工作簿没有得到修改,当它去检查程序的一部分,excel崩溃,我得到一个错误消息:“自动化错误”。

我甚至尝试在checkIn命令之后放入一个等待命令,但没有运气…

这里发生了什么? 有人能指出我正确的方向吗?

当没有更改( workbookVariable.saved = true )使用workbookVariable.CheckIn(False) 。 您不想CheckIn与原始版本完全相同的修订版本。 至less浪费空间。 这应该丢弃你的“CheckOut”。 请参阅MSDN 。

感谢这个页面指出应该是显而易见的。

好奇心的最后一点:为什么要检查工作簿,而不要对其进行更改?