问题
有同学在工作中会用到VBA,想要将影刀与Excel中的VBA结合,将在影刀中输入的数值传递到VBA中,然后再将计算结果传递回来。
解决方案
无法直接进行参数传递,需要借助python实现。
1、如图,假设在VBA中定义一个函数
Function MySubroutine(MyInput1 As Integer, MyInput2 As Integer) As String
Dim result As String
result = "The sum is " & (MyInput1 + MyInput2)
MySubroutine = result
End Function
2、在影刀的pyhon模块输入以下代码:
# 使用提醒:
# 1. xbot包提供软件自动化、数据表格、Excel、日志、AI等功能
# 2. package包提供访问当前应用数据的功能,如获取元素、访问全局变量、获取资源文件等功能
# 3. 当此模块作为流程独立运行时执行main函数
# 4. 可视化流程中可以通过"调用模块"的指令使用此模块
import xbot
from xbot import print, sleep
from .import package
from .package import variables as glv
import win32com.client
def main(my_input1,my_input2):
# 创建Excel应用程序对象
excel = win32com.client.Dispatch("Excel.Application")
# 打开工作簿并选择工作表
workbook = excel.Workbooks.Open(r"D:\desktop\1.xlsm")
worksheet = workbook.Worksheets("Sheet1")
# 调用VBA子程序并传递参数
vba_result=worksheet.Application.Run("MySubroutine", my_input1, my_input2)
# 关闭工作簿和Excel应用程序
workbook.Close()
excel.Quit()
#返回结果
return vba_result
3、在主流程进行调用并传递参数
4、结果如图
5、效果演示
作者:小曼 来源:影刀社区