Tag: imanage

如何在Excel VSTO插件中解决iManage限制

我们开发了一个Excel的VSTO插件,它从Web服务器拉取Excel表格,并允许用户操纵表单上的数据。 它与本地文件的副本一起工作,但我们并不真正关心这个副本。 但是,我们的一些客户也安装了“iManage Integration for Office”,这些客户经历了奇怪的行为。 在这种环境下,我们无法取消closures事件。 更具体地说,如果用户打开我们的文件之一并进行更改,然后closures文件,我们的事件处理程序会触发并提示它们保存对服务器上数据的更改。 如果他们select“取消”,或者如果他们select“保存”,并且由于某种原因保存失败,则我们将取消设置为“true”,以尝试保持文件处于打开状态。 通常这是完美的。 对于那些使用iManage的客户,无论如何都会closures文件。 如果我们的代码保存了文件的本地副本,那么文件就会closures。 如果本地副本尚未保存,则用户从iManage获得提示后会再次收到提示,询问是否要保存该文件。 从这里,用户可以点击取消,文件保持打开状态。 但是用户报告,在第一次点击“取消”之后看到第二个提示是令人困惑的。 而且他们不愿意禁用iManage插件。 我们希望在这种情况下能够保持文件打开状态,最好不要看到iManage提示符。 在为我设置的客户端(Excel 2010)的testing环境中工作时,我尝试了几件事情: 我尝试在工作簿级别BeforeClose和应用程序级别WorkbookBeforeClose设置取消; 没有一个工作(只要启用iManage,文件仍然closures) 我试图确保我的WorkbookBeforeClose的处理程序最后注册,通过注册它在工作簿级别的事件处理程序; 不用找了 我可以使用iManagefunction区手动切换到本地模式,这使一切正常,但我不知道是否/如何通过代码进行更改。 我可以在Globals.ThisAddIn.Application.COMAddIns中findiManage插件; 我尝试设置其Connect = false,但是这给出了一个错误,只有pipe理员可以连接/断开插件。 我可以在closures事件中保存本地文件,然后执行另存为创build第二个副本; 第二个副本现在处于活动状态,iManage将其closures; 然后我重新打开原始的本地文件。 它对用户来说看起来相当不错,但后来我有一堆COM引用旧文件上的单元格,这些都是垃圾。 我可能会循环并序列化它们并用新文件重新创build它们,但编码和运行将耗费大量时间,所以我正在寻找其他想法。 有什么办法可以保持文件的打开,而不会让用户做任何额外的事情? UPDATE 使用iManage 9.3.0.0和Excel 2010,我创build了一个参考Worksite Integration Interfaces Library(Ex)的VBAmacros。 事件发生,但文件仍然closures。 如果我没有设置Saved属性,并且在网格上input,我总是会收到iManage的提示,询问是否要保存。 Private WithEvents oWS As iManageExtensibility Private Sub oWS_DocumentBeforeClose2(ByVal Doc As Variant, IgnoreIManageClose […]