3

我们创建了一个 VSTO 2010 项目,其中包含一个用于 Excel 的功能区栏,它运行良好,但现在我们的一些客户将运行 Office 2007。

我们试图在 2007 年安装它,但没有成功(功能区被列为正在运行的加载项,但它没有出现在 Excel 的功能区选项卡中)。我已经尝试按照这个 SO 问题中提到的步骤(用 2007 参考 dll 替换 2010 参考 dll),但没有成功。

任何避免创建新的 2007 项目的建议(据我了解,这将涉及在我们的开发机器上卸载 Office 2010,并改为安装 2007)将不胜感激。

谢谢!

4

2 回答 2

5

嘎。原来是功能区 XML 上的架构存在问题,我们在将功能区 XML 剥离为单个标签时发现了该问题,以查看是否是 XML 中的任何控件等导致不兼容。

我们正在使用(很可能从示例中复制)

xmlns="http://schemas.microsoft.com/office/2009/07/customui"

但是一旦我们将其更改为:

xmlns="http://schemas.microsoft.com/office/2006/01/customui"

功能区立即出现,这与功能区的症状相吻合,显示为正在运行的加载项,但在 Excel 本身中不可见。如前所述(有关详细信息,请参阅此 SO 帖子),必须使用 v12 office 和互操作 dll。

于 2012-09-04T13:27:39.183 回答
2

您可以并排安装 2007 和 2010,并通过在命令行中运行以下命令或将其放在批处理文件中来避免两者之间切换的任何问题,这两种方法都可以:

reg add HKCUSoftwareMicrosoftOffice14.0WordOptions /f /v NoReReg /t REG_DWORD /d 1
reg add HKCUSoftwareMicrosoftOffice14.0ExcelOptions /f /v NoReReg /t REG_DWORD /d 1
reg add HKCUSoftwareMicrosoftOffice14.0PowerPointOptions /f /v NoReReg /t REG_DWORD /d 1
reg add HKCUSoftwareMicrosoftOffice14.0AccessOptions /f /v NoRepairNeeded /t REG_DWORD /d 1

reg add HKCUSoftwareMicrosoftOffice12.0WordOptions /f /v NoReReg /t REG_DWORD /d 1
reg add HKCUSoftwareMicrosoftOffice12.0ExcelOptions /f /v NoReReg /t REG_DWORD /d 1
reg add HKCUSoftwareMicrosoftOffice12.0PowerPointOptions /f /v NoReReg /t REG_DWORD /d 1
reg add HKCUSoftwareMicrosoftOffice12.0AccessOptions /f /v NoRepairNeeded /t REG_DWORD /d 1

至于您的代码,我发现 12 和 14 的 Excel 互操作代码或多或少是可互换的。您是否在 Excel Interop 14 中使用了 12 中没有的任何内容?

两个项目可能看起来并不理想,但您可能需要走这条路。好处是您将能够或多或少地复制和粘贴所有内容,特别是如果您为 2007 项目编写所有内容,然后复制/粘贴到 2010 项目,而不是相反。

希望这可以帮助

于 2012-09-04T12:53:23.323 回答