AmosRyan
发布于 2024-06-10 / 102 阅读
0
0

WPS通过VBA调用Python处理表格

一、安装Pyhton

到Python官网下载并安装python主程序

Python.org

二、安装xlwings及相关插件

1.通过pip安装xlwings

pip install xlwings

2.通过xlwings安装Excel或WPS插件

xlwings addin install

a.安装后Excel显示效果

b.安装后WPS显示效果

由于最新版本的wps不支持VBA,需要下载单独的vba安装包进行安装, wps.vba.exe

WPS在新版本新增【沙箱保护】功能,并且默认为开启状态,当用户主动更新或自动升级到新版本时,沙箱保护功能会导致VBA代码中的Shell函数没有权限运行。

在运行至shell函数时WPS就会报"70"错误。

解决方法:依次点击【WPS 表格】→【三】→【设置】,关闭【沙箱保护】功能,然后重启WPS即可解决。

三、通过模板创建项目

xlwings相当于是连接python的桥梁,要想在表格中调用python需要通过vba代码调用python程序,对于不怎么熟悉vba的小伙伴来说还是有一定的学习成本,而xlwings有个小功能帮你创建相关文件,非常简单:

xlwings quickstart PythonExcelProject

执行该命令,xlwings将会帮你创建PythonExcelProject文件夹及PythonExcelProject.pyPythonExcelProject.xlsm文件。

PythonExcelProject.xlsm文件中包含写好的调用python的代码(Alt+F11可快速查看):

代码主要功能为调用当前目录下同名python文件的main函数

Sub SampleCall()
    mymodule = Left(ThisWorkbook.Name, (InStrRev(ThisWorkbook.Name, ".", -1, vbTextCompare) - 1))
    RunPython "import " & mymodule & ";" & mymodule & ".main()"
End Sub

Sub SampleRemoteCall()
    RunRemotePython "http://127.0.0.1:8000/hello", apiKey:="DEVELOPMENT"
End Sub

PythonExcelProject.py文件中则为操作excel的代码:

import xlwings as xw

def main():
    wb = xw.Book.caller()
    sheet = wb.sheets[0]
    if sheet["A1"].value == "Hello xlwings!":
        sheet["A1"].value = "Bye xlwings!"
    else:
        sheet["A1"].value = "Hello xlwings!"

@xw.func
def hello(name):
    return f"Hello {name}!"

if __name__ == "__main__":
    xw.Book("PythonExcel.xlsm").set_mock_caller()
    main()

而后只需改动PythonExcelProject.py文件即可操作excel文件。


评论