当前位置:   article > 正文

【python 的各种模块】(1) 使用xlwings,在python直接调用vba脚本_python 调用 vba

python 调用 vba

目录

0 前言

1 VBA 内容

1.1  EXCEL这边VBA的内容

1.2 VBA的测试代码

2 python 调用

2.1 python 调用VBA的过程和结果

2.2 代码


0 前言

前面写了这么多,没想到,其实py是可以直接支持VBA

python的模块import xlwings,可以让python直接调用EXCEL工作簿文件里的VBA脚本

具体步骤如下

1 VBA 内容

1.1  EXCEL这边VBA的内容

试验环境:C:\Users\Administrator\Desktop\1001.xlsm,这个文件里包含这样一个VBA程序

VBA程序:放在测试EXCEL文件的模块里,写一个函数fuction如下

1.2 VBA的测试代码

  1. Function test1901(a, b)
  2. Debug.Print "1901"
  3. test1901 = a * b
  4. End Function

2 python 调用

2.1 python 调用VBA的过程和结果

  • 需要 import xlwings
  • 利用 wb = app.books.open() 打开EXCEL文件

app = xw.App(visible=True,add_book=False)
# 设置测试文件的路径
wb = app.books.open(r'C:\Users\Administrator\Desktop\1001.xlsm')

  • 直接调用EXCEL内的函数,使用 wb.macro() 函数即可,
  • 函数本身需要在EXCEL文件内
  • EXCEL文件可以不是打开状态

  • 副作用就是,如果EXCEL文件本身处于打开状态,PY会再打开一个这个文件的副本--只读副本
  • 再就是,因为每次调用都需要执行打开EXCEL文件的操作,有点卡有点慢
  • 如果是同时打开多个EXCEL文件不敢想象

2.2 代码

  1. import xlwings as xw
  2. app = xw.App(visible=True,add_book=False)
  3. # 设置测试文件的路径
  4. wb = app.books.open(r'C:\Users\Administrator\Desktop\1001.xlsm')
  5. # 调用VBA脚本
  6. test1901 = wb.macro('test1901')
  7. test1901(4, 5)
  8. print(test1901(4, 5))

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/661910
推荐阅读
相关标签
  

闽ICP备14008679号