以编程方式确定Excel文件(.xls)是否包含宏

Gka*_*akk 6 excel vba timestamp digital-certificate ms-office

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

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

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

Dir*_*mar 2

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

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

另一个 OLE 文档查看器,但具有编辑功能

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

[MS-OSHARED]:Office 通用数据类型和对象结构规范

[MS-OFFCRYPTO]:Office 文档密码结构规范