NO.011-使用Excel表格宏的方法——By.杭州组
评论
收藏

NO.011-使用Excel表格宏的方法——By.杭州组

经验分享
南吕
2023-05-10 20:59·浏览量:6000
南吕
发布于 2023-05-10 20:57更新于 2023-05-10 20:596000浏览

作者:南吕

关键词:表格宏、vba


一、问题背景

        在日常工作中,Excel表格数据处理是一个很常见的任务。而有些繁琐的操作手动实现非常费时,例如跨表格复制、粘贴和格式化。因此,使用VBA宏可以大大提高工作效率。

二、解决思路

以下介绍如何用影刀调用Excel宏,包括两种实现思路:

1. 使用python的win32com库来操作Excel,向Excel工作表中添加VBA模块,并以此运行Excel中的VBA宏

(1)导入必要的模块:使用Python中的win32包,首先需要导入必要模块:win32com.client。

    import win32com.client as win32

(2)打开Excel文件:使用win32包中的Dispatch方法,创建Excel应用程序对象,打开指定的Excel工作簿。

    # 创建Excel应用程序对象

    excel = win32.Dispatch('Excel.Application')

    excel.Visible = True

    # 打开Excel工作簿

    workbook = excel.Workbooks.Open('file_path')

(3)设置VBA代码:在ActiveWorkbook中添加一个VBA模块,设置VBA模块的名称为'MyMacro',添加VBA代码到模块中。

    # 在ActiveWorkbook中添加一个VBA模块

    vba_module = workbook.VBProject.VBComponents.Add(1)

    # 设置VBA模块的名称为'MyMacro'

    vba_module.Name = 'MyMacro'

    # 添加VBA代码到模块中

    vba_code='Sub myMacro()\nMsgBox "Hello World!"\nEnd Sub'

    vba_module.CodeModule.AddFromString(vba_code)

(4)运行宏

    workbook.Application.Run('MyMacro.myMacro')

(5)关闭Excel应用程序

    # 保存并关闭工作簿

    workbook.Save()

    workbook.Close()

    # 退出Excel应用程序

    excel.Application.Quit()


2. 影刀官方指令【运行Excel宏】

        使用影刀官方指令【运行Excel宏】,可调用已经存在的宏。具体实现方式包括三种情况:调用当前工作簿保存的宏、调用个人宏工作簿保存的宏和调用其他表格保存的宏。需要注意的是,xlsx文件无法保存宏。

(1)调用当前工作簿保存的宏

影刀中启动需要执行宏的Excel文件,【运行Excel宏】中‘宏名称’:模块名.宏名,无需添加文件名称。

(2)调用个人宏工作簿保存的宏

手动打开Excel文件时,保存在XLStart文件夹的个人宏工作簿文件会在Excel启动的时候都会自动打开。使用影刀指令【启动Excel】打开Excel文件则需要另外打开。
个人宏工作簿文件路径:打开‘显示隐藏文件’,在文件路径:%appdata%/Microsoft/Excel/XLSTART/,复制文件‘PERSONAL.XLSB(2007版本)/Personal.xls(2003版本)’的路径,如:C:\Users\***\AppData\Roaming\Microsoft\Excel\XLSTART\PERSONAL.XLSB

影刀中启动个人宏工作簿文件和需要执行宏的Excel文件,【运行Excel宏】中‘宏名称’:PERSONAL.XLSB!模块名.宏名。

(3)调用其他表格保存的宏

影刀中启动保存宏的Excel文件和需要执行宏的Excel文件,【运行Excel宏】中‘宏名称’:'文件名.xlsm'!模块名.宏名。

其中,'文件名.xlsm'是含有VBA宏代码的Excel文件名,'模块名.宏名'是执行的VBA宏名称。如果需要传递参数,可以在宏的名称后面加上括号并在其中输入参数内容。

三、常见报错及解决方案

报错信息1:(-2147352567, '发生意外。', (0, 'Microsoft Excel', '无法运行“***”宏。可能是因为该宏在此工作簿中不可用,或者所有的宏都被禁用。', 'xlmain11.chm', 0, -2146827284), None)

解决方法:

  1. 宏文件无法运行,检查宏文件的代码是否正确或者是否存在,重新创建,或者修改错误并重新保存宏文件。
  2. 宏被禁用,在宏设置中勾选启用所有宏即可,具体步骤参考报错信息2的解决方案。
  3. 查看宏文件的安全级别是否设置得太高,可以调低安全级别。
  4. 关闭Excel进程,重启 Excel 软件。


报错信息2: (-2147352567, '发生意外。', (0, 'Microsoft Excel', '不信任到 Visual Basic Project 的程序连接\n', 'xlmain11.chm', 0, -2146827284), None)

解决方案:
这个错误通常是因为Microsoft Excel的安全设置不允许程序向其VBA项目中添加代码。
在菜单栏中选择“文件” > “选项” > “信任中心” > “信任中心设置” > “宏设置”,启用“启用所有宏”和“受信任的程序的访问到 VBA 项目对象模型”选项。


Excel宏的拓展阅读:https://www.w3cschool.cn/excelvba/excelvba-working.html

收藏1
全部评论1
最新
发布评论
评论