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

时间:2010-06-09 13:39:37

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

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

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

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

2 个答案:

答案 0 :(得分:2)

是的,您可以将.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

答案 1 :(得分:0)

包含宏的xls文件应包含类似

的字符串
Keyboard Shortcut:

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