5

我正在开发一个基本上如下所示的

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

(编辑:我有“If workbookVariable.Saved = True”;这是不正确的。如果文件已经保存,则保存文件没有意义......所以现在更新以反映我真正拥有的内容。)

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

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

我什至尝试在命令之后输入等待命令checkIn,但没有运气......

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

4

1 回答 1

0

如果未进行任何更改 ( workbookVariable.saved = true),请使用workbookVariable.CheckIn(False). 您不希望进行CheckIn与原始版本完全相同的修订。至少浪费空间。这应该丢弃您的“CheckOut”。请参阅MSDN

感谢此页面指出应该显而易见的内容。

最后一点好奇:当您可能不会更改工作簿时,为什么还要查看它?

于 2013-02-12T03:25:02.653 回答