验证是否xls文件包含VBA宏而不在MS Excel中打开它

柔音

我有一大套.xls(Excel 97-2003工作簿)文件。它们中的一些包含VBA宏,我想找到一种自动过滤掉它们的方法,而无需在MS Excel中一个一个地打开它们。

有一个与我的问题类似旧帖子,我已经下载了OLE Doc查看器,但无法打开.zip文件,看来它已经过时了...

有谁知道有没有API或工具来检查.xls文件是否包含VBA宏,而无需在MS Excel中打开它?首先,我不必理会宏的内容。

PS:对于.xlsx.xlsm文件,我们可以将其扩展名更改为.zip包含某些.xml文件的文件扩展名,并最终更改vbaProject.bin为VBA宏。但是,此方法不适用于.xls文件,重命名不会生成有效.zip文件。

d-stroyer

这是我为您准备的一个简单的Python 2.7解决方案:

它仅取决于项目页面上可用的OleFileIO_PL模块。OleFile解析器的优点是它不知道文件的“特定于Excel的”内容;它只知道更高级别的“ OLE存储”。因此,它可以快速分析文件,并且不存在执行潜在有害宏的风险。

import OleFileIO_PL
import argparse

if __name__=='__main__':
    parser = argparse.ArgumentParser(description='Determine if an Excel 97-2007 file contains macros.', epilog='Will exit successfully (0) only if provided file is a valid excel file containing macros.')
    parser.add_argument('filename', help="file name to analyse")
    args=parser.parse_args()

    # Test if a file is an OLE container:
    if (not OleFileIO_PL.isOleFile(args.filename)):
        exit("This document is not a valid OLE document.")

    # Open an OLE file:
    ole = OleFileIO_PL.OleFileIO(args.filename)

    # Test if known streams/storages exist:
    if (not ole.exists('workbook')):
        exit("This document is not a valid Excel 97-2007 document.")

    # Test if VBA specific streams exist:
    if (not ole.exists('_VBA_PROJECT_CUR')):
        exit("This document does not contain VBA macros.")

    print("Valid Excel 97-2007 workbook WITH macros")

我在几个文件上成功地对其进行了测试。让我知道它是否适合您

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从SSIS包中打开Sharepoint上的Excel文件而不移动它

创建内存中的 Excel 文件并在不使用 COM Interop 的情况下在 Excel 中打开它

在打开多个Excel文件时检查是否打开了特定的Excel文件并激活它

在Excel中打开.csv文件并另存为Excel工作表时,它具有与原始Excel工作表相同的属性吗?

OpenXML - 创建和打开 Excel 文件而不保存它

写入包含宏的现有Excel .xls文件

如何编写宏以打开Excel文件并将数据粘贴到包含宏的文件中?

如何打开文件并在VimScript中操作它而不在窗口中显示它?

使用Interop.Excel检查Excel文件是否包含VBA宏

VBA Excel宏打开txt文件浏览

Excel锁定文件-为什么我可以复制它但不能打开它?

Python:保存图而不在GUI中打开它

打开现有的 Excel 文件并通过 MS Project 在该文件中运行宏

如果未在c ++中打开它,是否可以写入ofstream

如何在Java中打开文件并通知它?

从Excel中打开文件/工作簿时宏不运行

无法从Excel 2016中打开MS查询

如何在VBA中激活打开的excel

从启动器调用 .desktop 文件在编辑器中打开它而不是打开它描述的程序

在 VBA 中附加 TXT 文件并在 Excel 中打开

如何打开多个excel文件并在DataGridView中打开它们

从openpyxl中的zipfolder打开Excel文件

运行命令以在Excel中打开CSV文件

从打开的 Excel 文件中获取 PID

在Excel中打开OpenXML文件需要修复

从R脚本在excel中打开CSV文件

在Excel 2016中打开CSV文件

如何在Excel中打开ODS文件?

从excel文件中打开xml读取