允许用户更改表单名称,VSTO

这与我的问题类似,但我的解决方法dosn't没有帮助这些实例和原因是更多的定义。 我有一个工作簿级别定制,将从保留复制的工作表的名称的文件夹添加工作表。这工作正常,并不会导致任何问题,除非用户重命名工作表。 如果用户重命名工作表,保存工作簿,然后回到它,然后尝试执行引用工作簿或工作表,他们得到错误的任何操作:

Microsoft.VisualStudio.Tools.Applications.Runtime.ControlNotFoundException: This document might not function as expected because the following control is missing: Sheet5. Data that relies on this control will not be automatically displayed or updated, and other custom functionality will not be available. Contact your administrator or the author of this document for further assistance. ---> System.Runtime.InteropServices.COMException: Programmatic access to the Microsoft Office Visual Basic for Applications project system could not be enabled. If Microsoft Office Word or Microsoft Office Excel is running, it can prevent programmatic access from being enabled. Exit Word or Excel before opening or creating your project. 

现在closures和打开Excel没有帮助,将表单移动到新的位置不会有帮助,如果添加了多个表单,则删除违规表单将无济于事。 基本模板有6张,我已经尝试添加到中间(我们希望他们在那里)和最后(只是踢)。 这似乎没有帮助。 如果删除所有添加的工作表,请保存工作簿并再次打开,然后恢复function。 被添加的图纸在VSTO中没有命名为图纸,但大多数是以数字或名称引用的(有6张图纸,所以如果在3之后添加图纸,它们的索引是4 to (ThisWorkBook.Sheets.Count-3) ,或者if Sheet.Name不是来自原始6的任何名字(他们永远不会,我已经脚本预防)。

我的问题是,我真的需要能够让用户添加一个通用的报告表,如果我devise的将无法正常工作。 这意味着我需要能够添加一个表,让他们重新命名,保存并返回到它。 这个错误不会发生,直到表格被保存,closures,并重新打开,如果这有助于任何人。 我也不能在任何安装了VS2012的机器上复制这个,即使这个计算机上没有安装该项目(刚安装的VSTO)。 尽pipe所有这些VS2012机器都用于其他Excel VSTO项目。 但是我可以在XP-Win8和Excel Office'07 -365上复制它。

**所以我蒸馏的问题:有没有办法允许用户添加工作表并重命名(最好在VSTO之外),而不会遇到Runtime.ControlNotFoundException

谢谢。

基本上,每当工作簿重新打开时,您都需要重新初始化工作表作为VSTO对象。 由于这些表格不是硬编码到您的解决scheme中,VSTO无法识别它们,除非您的代码在运行时查找这些内容并“重新连接”它们。 这在VSTO文档中进行了解释: http : //msdn.microsoft.com/en-us/library/cc442981.aspx

但是我相信你需要一个加载项来完成这个工作。 我不认为它可以被纳入工作簿的“后面的代码”。