python - 使用 xlwings 从本工作簿调用 vba 宏
问题描述
我正在努力运行通过 xlwings 激活的 vba 宏。
我的宏保存在 ThisWorkbook 区域而不是模块中。当我对保存在模块中的宏使用类似的方法时,它可以正常工作。
PythonScript 打开工作簿并运行模块。然后它会尝试运行另一个位于工作簿不同选项卡中的宏。
import xlwings as xw
wb = xw.books.open(‘myworkbook’)
ExcelMacro = wb.macro(‘1stmacro’)
ExcelMacro()
#1stmacro 位于模块中。#这行得通。
ExcelMacro = wb.macro(‘ThisWorkbook.2ndmacro’)
ExcelMacro()
#2nd 宏位于 ThisWorkbook 而不是 Module。全名由 ThisWorkbook.2ndMacro 给出,其中第二个宏采用 2ndMacro_Click 形式。用于激活此功能的按钮包含在与打开工作簿的选项卡不同的选项卡中。
当我保存工作簿以打开此按钮所在的位置时,它可以工作;当它保存在除此之外的其他选项卡上时,它不起作用。
任何帮助将不胜感激!
解决方案
是否有必要从此工作簿而不是任何模块调用宏?如果可以的话,使用有效的方法总是更安全,而不是考虑变通方法。
由于带有宏的工作簿无论如何都与.xlsm
或.xlsb
扩展一起保存,因此应该没有什么可以阻止您在其中插入模块。
alt+F11
,在左上角右键单击“此工作簿”,然后选择插入、模块。
模块将被创建,您可以复制粘贴甚至拖放宏。
如果这不可能,现在让我来。
推荐阅读
- python - 使用布隆过滤器会比在 Python 中搜索字典或列表更快吗?
- django - 如何使用 django 模板限制 html 中的数据?
- nginx - 两个位置在 nginx 中无法用于 MERN 应用程序
- css - 问题:手机的块 id h1 字体大小
- flutter - 如何在更大的项目中添加新的 Flutter 项目作为 IntelliJ 模块
- r - 闪亮的多个动态过滤器更新
- unreal-engine4 - 我找不到在构造脚本中制作的组件
- android - 如何使用 Kotlin 从网页中提取特定文本?
- python-3.x - 自动化 AWS Glue 工作流程
- python - COPY INTO 从 Azure Dala Lake gen2 到 Azure Synapse 不执行任何操作