1、python调用 VBA
假定我们的excel里边有个vba函数:foo,参数是args
其 VBA函数为
Sub test() 《============这个函数很重要,对应着python
Dim m
m = 1
Columns(“G:G”).Select
m = 1
On Error GoTo Err_Handle
For m = 1 To 65
Selection.Find(What:=”男”, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, MatchByte:=False, SearchFormat:=False).Activate
ActiveCell.Replace What:=”男”, Replacement:=”1″, LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Next m
Exit Sub
Err_Handle:
End Sub
PYTHON 调用
必须另存为xlsm文件格式
2. 第二,在执行Python脚本的时候必须是打开excel的
3. 必须新建模块(vba中)
4. vba代码必须有函数
5. office必须开启宏,否则不生效 6. 打开vba快捷键alt + f11
模块.png
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import win32com.client #导入模块
filename = “C:/Users/Administrator/Desktop/test.xlsm”
xls=win32com.client.Dispatch(“Excel.Application”)
xls.Workbooks.Open(Filename=filename) #文件路径
xls.DisplayAlerts = 0 #不显示警告信息
ret = xls.Application.Run(“foo”, args) #vba函数即参数
xls.Application.Quit() #运行完退出
2、xlwings:操作Excel,通过宏调用Pyhton(VBA调Python)
原文:
https://blog.csdn.net/qcyfred/article/details/80300354
xlwings的安装方式(更简单,如果有效的话,但不确定是否有效,慎重!)
1)安装xlwings
pip install xlwings -i https://pypi.tuna.tsinghua.edu.cn/simple
查看版本
xlwings -V
显示最新版 :
xlwings 0.19.1
2)安装addin –是XLwings自带的
xlwings addin install
3)找到xlwings的addin文件夹,打开xlwings.xlam文件:
位置:
C:\Program Files\Anaconda3\Lib\site-packages\xlwings\addin\xlwings.xlam
双击打开文件xlwings.xlam
image.png
勾选RunPython: Use UDF Server
这样一旦执行py的话,会启一个黑窗口,此后执行py速度要比不勾选快
4)在EXCEL上,勾选VBA对xlwings支持:
开发工具–查看代码
打开代码选项。
然后:工具-应用–选择 xlwings
image.png
5)配置编译器 和 需要执行的py文件路径
image.png
interpreter:编译器,找到python.exe(我的是anaconda 3, 一步到位)
PYTHONPATH:py文件路径
6) 写宏,插入按钮,绑定宏
Sub hi()
RunPython (“from xw import say_hi; say_hi()”) ‘xw为py文件,say_hi为函数名
End Sub
image.png
image.png
say_hi.py文件内容:
# -*- coding: utf-8 -*-
import xlwings as xw
def say_hi():
wb = xw.Book.caller()
sht = wb.sheets[0]
sht.range(‘A1’).value = ‘Hello, world’
7)开发工具 – 插入 – 表单控件(按钮)
编辑文字,指定宏
最后,点击按钮,Done!