前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >从Python中运行Excel VBA

从Python中运行Excel VBA

作者头像
fanjy
发布2022-04-13 14:01:04
5.5K0
发布2022-04-13 14:01:04
举报
文章被收录于专栏:完美Excel

有时候,我们可能想要从Python运行Excel VBA宏,特别是当想要运行已有的Excel宏时,这很有用——甚至可以在不打开Excel文件的情况下执行这些VBA宏。

这里将使用py32win库进行演示。注意,要安装py32win库,在命令提示符下键入以下命令:

pip install pywin32

然而,要在Python中导入该库,则其名字成为win32com.client:

import win32com.client

Excel VBA宏

下面是一个非常简单的Excel VBA宏,它接受一个参数,在工作表Sheet1的单元格B2中输入一条问候语。当然,可以创建任何宏并使用Python运行它。

代码语言:javascript
复制
Sub mymacro(name As String)
   Worksheets("Sheet1").Range("B2").Value = "你好," & name & "!"
End Sub

从Python中运行VBA宏

现在,将编写Python代码,从导入win32com.client开始,并实例化一个“xl”对象来表示Microsoft Excel应用程序。

然后,打开这个包含VBA宏的Excel文件,并将其赋给变量wb。

代码语言:javascript
复制
import win32com.client
xl =win32com.client.Dispatch("Excel.Application") #实例化Excel应用程序
wb =xl.Workbooks.Open(r'D:\test\pythonrunvba.xlsm')
xl.Application.Run('pythonrunvba.xlsm!模块1.mymacro("完美Excel")')
wb.Save()
xl.Application.Quit()

为了调用VBA宏,使用了xl.Application.Run()方法,其中的参数指示要运行的宏:

xl.Application.Run('pythonrunvba.xlsm!模块1.mymacro("完美Excel")')

其中:

1.pythonrunvba.xlsm!:包含VBA的文件,这里不需要包括完整路径。

2.模块1:包含宏的模块名。

3.mymacro("完美Excel"):宏名,注意到这里传递参数到VBA。

如果VBA宏不接受任何参数,只需包括宏名而无须括号,例如:

xl.Application.Run('pythonrunvba.xlsm!模块1.mymacro')

接下来,使用wb.Save()保存这个Excel文件,也可以选择使用VBA代码来保存这个工作簿。

最后,不要忘了调用xl.Application.Quit()关闭Excel应用程序。让Excel应用程序在后台打开可能会在以后导致程序出现问题。

欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-03-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档