Excel宏的数字签名

时间:2009-09-03 12:39:34

标签: excel digital-signature

在我们的项目中,我们有一个excel模板(.xlt)和一个外接程序文件(.xla)。这些文件用于创建数据视图。 Dataview只不过是一种报告。 xla包含用于创建用于创建,删除,管理数据视图及其内容的控件的代码。这些控件是在VC ++中创建的用于创建数据视图的OCX控件。我们分别添加了加载项代码和模板文件。

对xlt和xla进行了数字签名,以确保代码是防篡改的。一切都很好,直到数字签名出现。通过打开模板文件(.xlt)并将文件保存为.xls扩展名来创建数据视图,从而不会更改经过数字签名的xlt和xla文件。当我们尝试保存时,我们收到以下消息:“你正在尝试修改已签名的项目。你没有正确的密钥来签署项目......”

当我们提供保存更改并放弃签名时,仅对生成的新文件丢失签名。 xlt和xla的签名保持不变。

我们还尝试手动编辑excel中的单元格并保存,但我们没有收到上述消息。只有在使用OCX控件创建数据视图并保存它们之后才会弹出上述消息。

2 个答案:

答案 0 :(得分:0)

你想保护什么?您是否签署了整个工作簿/模板,或者您只签署了代码?

.xls是.xlt的副本,因此模板签名也会复制到xls。思路:

  1. 尝试仅签名模板中的代码。在IDE中,使用工具 - >数字签名(Excel 2002/2003)
  2. 从模板中删除所有代码并将其放入添加
  3. 如果这太难了,请仅使用模板中的代码进行第二次添加

答案 1 :(得分:0)

我也有类似的问题。我发现只有当我的宏将工作表插入或删除到工作簿中时才会发生这种情况。事实证明,因为每个工作表都有特定于该工作表的宏,所以添加或删除工作表可以有效地修改宏源代码。

感谢Turbo Law的Keith Survell让我在这个问题上指出了正确的方向:

http://help.turbolaw.com/entries/362246-warning-message-you-have-modified-a-signed-project-you-do-not-have-the-right-key-to-sign-this-projec

我无法找到解释此问题的权威Microsoft来源。