【问题标题】:Programmatically Determine If An Excel File (.xls) Contains Macros以编程方式确定 Excel 文件 (.xls) 是否包含宏
【发布时间】:2011-03-01 16:24:41
【问题描述】:

有没有什么方法可以以编程方式确定 .xls 是否包含宏,而无需在 Excel 中实际打开它?

还有什么方法可以检查这些宏是用哪个证书(包括时间戳证书)签名的?再次不使用 Excel。

我特别想知道,当存在宏时,是否有任何字符串总是出现在 Excel 文件的原始数据中。

【问题讨论】:

  • 这将用于 XLS 文件

标签: excel vba timestamp ms-office digital-certificate


【解决方案1】:

是的,您可以将 .xls 文件作为复合文档文件打开,并检查其中是否包含 VBA 文件夹和包含 VBA 代码的流。

此 CodeProject 文章中提供了示例代码:

Another OLE Doc Viewer but with editing facility

证书信息存储在 DocumentSummaryInformation 流中。如果您想从那里读出信息,您应该深入了解 Microsoft 提供的文件格式规范:

[MS-OSHARED]: Office Common Data Types and Objects Structure Specification

[MS-OFFCRYPTO]: Office Document Cryptography Structure Specification

【讨论】:

  • 谢谢,这比我预期的还要好,我不知道文件格式是公开的!
【解决方案2】:

一个包含宏的 xls 文件应该包含一个类似于

的字符串
Keyboard Shortcut:

不知道这是否是一个万无一失的解决方案

【讨论】:

    猜你喜欢
    • 2014-11-11
    • 2013-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-11
    • 1970-01-01
    相关资源
    最近更新 更多