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

标签 excel vba timestamp ms-office digital-certificate

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

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

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

最佳答案

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

关于excel - 以编程方式确定 Excel 文件 (.xls) 是否包含宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3006328/

相关文章:

excel - 有没有办法让 Excel VBA IDE 与 TFS 2010 一起工作?

timestamp - 普罗米修斯时间戳

java - 在java中用时区解析时间戳?

excel - Rubberduck VBA 代码检查 : Member 'x' has a 'VB_VarHelpID' attribute with value '-1' , 但没有相应的注释

vba - 使用 ADO 连接到 Excel - 不知道工作表名称

VBA-替换字符串中的字符

php - 如何查找给定时区的 DST 开始和结束日期?

excel - 循环行以从一个工作表的列复制到另一个工作表

excel - 检查或查找值是否存在于另一列中

vba - 上周一的日期 Excel