Python操作Excel的Xlwings教程(八)——Excel使用VBA调用Python

2024-03-27 09:38

本文主要是介绍Python操作Excel的Xlwings教程(八)——Excel使用VBA调用Python,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

操作Excel的Xlwings教程已经陆陆续续出了七篇了,现在是第八篇。历史关于Xlwings的一些教程大家可以在看我的主页。

在这些教程学习的过程中,有一些小伙伴反映自己有些时候找不到相应的文档,想要实现的功能不知道怎么找资料进行学习。这里我推荐官网的VBA教程,在上个关于Xlwings的教程中有相应的体现。说到这也就开始了我们这次推文的主题,在Xlwings中使用VBA的宏来进行Excel的操作。

 

一、知识准备

在Xlwings的官方文档中,我寻找到了一个关于Python API的东西。传送门如下:

https://docs.xlwings.org/en/stable/api.html#

 

其中有一段关于(Macro)宏指令的描述:

这什么意思呢?

 

意思就是:我们可以使用Xlwings在Excel VBA中运行一个子过程或函数,另外这个子过程或函数不是特定工作簿的一部分,而是外接程序的一部分。这个Macro的一个name参数是一个具有或不具有模块名称的子过程或函数。

我们在xlwings的安装目录下能找到一个Excel加载宏文件- xlwings.xlam,在我个人电脑上显示如下:

这个宏文件的作用,可以先简单的理解为在Excel中显示xlwings选项卡,显示之后才可以在Excel中通过VBA执行python的脚本和用户自定义函数(UDF)。

还是简单说明一下吧,假设现在我们新建一个test.xlsx文件,打开文件后我们在菜单栏中是没有xlwings这个选项卡的:

当我们打开这个xlwings.xlam文件并启用宏后,我们Excel菜单栏出现了xlwings的选项卡。

Tips: xlwings中的xlwings.bas文件中可以看到xlwings.xlam中的代码。

 

二、环境准备

既然我们需要在Excel中通过VBA调用Python,那么就需要进行一些环境的设置。我们进行以下步骤的设置:

Step_1: 显示“开发工具”。

文件 - 更多 - 选项 - 自定义功能区 - 开发工具 - 确定。

Step_2: 启用宏。

文件 - 更多 - 选项 - 信任中心 - 信任中心设置 - 宏设置 - 启用所有宏。

Step_3: 显示xlwings选项卡。

第一部分我们是通过打开python目录下xlwings.xlam文件显示xlwings显示选项卡的额,这个方式是比较直接,但是每一次运行的之前都要先打开这个文件就显得非常麻烦了。Xlwings官方文档中给我们一个好的解决方案:

也就是我们可以在cmd黑窗口使用xlwings addin install来进行安装,安装后的成功显示如下:

Step_4: 配置python编译器的路径,以及执行的python脚本路径。

接下来我们就要进行解释器的配置了,打开测试文件test.xlsx,点击xlwings选项卡

我们先勾选右边的RunPython:Use UDF Server。左边的interpreter中我们填入本地Python.exe的路径:

D:\Python365\python.exe。

PYTHONPATH中填入的是一个py文件的路径。这里我们先填入一个脚本文件:E:\code,UDF Modules中填入该路径下一个脚本文件的名称,这里我填入的是test.py如下所示:(当然了在UDF Modules中不填入信息,在PYTHONPATH中直接填入文件的全路径也是可以的E:\code\test.py)。

Step_5: 配置宏加载项。

由于在VBA中调用Python代码,需要xlwings.xlam加载宏的支持。我们来配置一下加载项。

点击Excel的“开发工具”,点击“Visual Basic”,点击“工具”,点击“引用”。勾选中xlwings,点击“确定”。

以上步骤就是我们的环境设置了,当然了在这之前我要安装好xlwings。

 

三、运行测试脚本

我们在test.py文件中输入以下代码:

import xlwings as xw
def test_vba():wb = xw.Book.caller()sht = wb.sheets[0]sht.range('A1').value = 'python知识学堂'
 

接着我们打开test.xlsx文件,点击“开发工具”,点击“Visual Basic”,在VBE代码编辑框中输入以下截图所示的代码:(截图包含VBE和Excel结果图)

然后我们点击运行这个宏,我们可以在Excel中看到A1单元格已经写上了“python知识学堂”。当然了,我们可以为这个宏添加一个按钮(这属于VBA的知识,这里就不过多介绍了),具体的操作大家可以自己看文档实现一下。

 

四、总结

以上就是本次推文的所有内容了,当然了选例比较简单,只是为了说明在怎么在VBA中调用xlwings编写的代码。这种VBA调用Python的操作,虽然比较麻烦,但是可以实现更多的功能,有更多的可能性。

 

这篇关于Python操作Excel的Xlwings教程(八)——Excel使用VBA调用Python的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/851666

相关文章

Django开发时如何避免频繁发送短信验证码(python图文代码)

《Django开发时如何避免频繁发送短信验证码(python图文代码)》Django开发时,为防止频繁发送验证码,后端需用Redis限制请求频率,结合管道技术提升效率,通过生产者消费者模式解耦业务逻辑... 目录避免频繁发送 验证码1. www.chinasem.cn避免频繁发送 验证码逻辑分析2. 避免频繁

Java使用Thumbnailator库实现图片处理与压缩功能

《Java使用Thumbnailator库实现图片处理与压缩功能》Thumbnailator是高性能Java图像处理库,支持缩放、旋转、水印添加、裁剪及格式转换,提供易用API和性能优化,适合Web应... 目录1. 图片处理库Thumbnailator介绍2. 基本和指定大小图片缩放功能2.1 图片缩放的

精选20个好玩又实用的的Python实战项目(有图文代码)

《精选20个好玩又实用的的Python实战项目(有图文代码)》文章介绍了20个实用Python项目,涵盖游戏开发、工具应用、图像处理、机器学习等,使用Tkinter、PIL、OpenCV、Kivy等库... 目录① 猜字游戏② 闹钟③ 骰子模拟器④ 二维码⑤ 语言检测⑥ 加密和解密⑦ URL缩短⑧ 音乐播放

python panda库从基础到高级操作分析

《pythonpanda库从基础到高级操作分析》本文介绍了Pandas库的核心功能,包括处理结构化数据的Series和DataFrame数据结构,数据读取、清洗、分组聚合、合并、时间序列分析及大数据... 目录1. Pandas 概述2. 基本操作:数据读取与查看3. 索引操作:精准定位数据4. Group

Python pandas库自学超详细教程

《Pythonpandas库自学超详细教程》文章介绍了Pandas库的基本功能、安装方法及核心操作,涵盖数据导入(CSV/Excel等)、数据结构(Series、DataFrame)、数据清洗、转换... 目录一、什么是Pandas库(1)、Pandas 应用(2)、Pandas 功能(3)、数据结构二、安

Python使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我

Python安装Pandas库的两种方法

《Python安装Pandas库的两种方法》本文介绍了三种安装PythonPandas库的方法,通过cmd命令行安装并解决版本冲突,手动下载whl文件安装,更换国内镜像源加速下载,最后建议用pipli... 目录方法一:cmd命令行执行pip install pandas方法二:找到pandas下载库,然后

MySQL中EXISTS与IN用法使用与对比分析

《MySQL中EXISTS与IN用法使用与对比分析》在MySQL中,EXISTS和IN都用于子查询中根据另一个查询的结果来过滤主查询的记录,本文将基于工作原理、效率和应用场景进行全面对比... 目录一、基本用法详解1. IN 运算符2. EXISTS 运算符二、EXISTS 与 IN 的选择策略三、性能对比

Python实现网格交易策略的过程

《Python实现网格交易策略的过程》本文讲解Python网格交易策略,利用ccxt获取加密货币数据及backtrader回测,通过设定网格节点,低买高卖获利,适合震荡行情,下面跟我一起看看我们的第一... 网格交易是一种经典的量化交易策略,其核心思想是在价格上下预设多个“网格”,当价格触发特定网格时执行买

Python标准库之数据压缩和存档的应用详解

《Python标准库之数据压缩和存档的应用详解》在数据处理与存储领域,压缩和存档是提升效率的关键技术,Python标准库提供了一套完整的工具链,下面小编就来和大家简单介绍一下吧... 目录一、核心模块架构与设计哲学二、关键模块深度解析1.tarfile:专业级归档工具2.zipfile:跨平台归档首选3.