如何在Excel之外执行VBA宏

5
我有一个包含大量VBA和宏的Excel电子表格,其中包括一个按钮。
如何在Excel中执行VBA代码(特别是点击按钮并触发其onclick事件)?我希望能够在Python中从Excel之外执行此操作。
注意:我愿意接受不同语言(如C++、C#或Java)的答案;但是,迄今为止,我更喜欢使用Python,因为它可以更顺畅地连接我的其他Python应用程序。
注意2:我可能需要使用Python Excel库之一来操作Excel电子表格。
版本号:
Microsoft Excel Office 365 Version 1708 Build 8431.2079
python 2.7
3个回答

5

您可以使用win32com库通过Python与COM对象进行交互。您可以使用pip安装win32com库。至少我是这样做的。实际上,您不是在工作表上单击按钮,而是调用嵌入在VBA代码中的子例程在您的工作表上运行。

此外,我使用的是Python 3.6,但我认为Python 2.7应该是兼容的。以下是基本概述。

安装Win32Com

打开命令提示符并键入:

pip install pypiwin32

代码

import win32com.client as win32

excel = win32.Dispatch("Excel.Application") # create an instance of Excel
#excel.Visible = 1 #Uncomment this to show Excel working through the code
book = excel.Workbooks.Open(Filename=r'C:\YourBookHere.xlsm')
excel.Run("YourBookHere.xlsm!Sheet1.MacroName") # This runs the macro that is on Sheet1
book.Save()
book.Close()
excel.Quit()

希望这可以帮到您。这是我的第一篇帖子。 编辑:稍微整理了一下。

嘿,你使用“Sheet1”来定位宏。有没有办法指定实际的工作表名称?我尝试了Worksheets(“name”),但不起作用。 - David Pesetsky

2

对于dylan的出色回答,我想进一步补充:您也可以使用Python的xlwings包来实现相同的功能。本质上,xlwingspywin32的一个高级封装器,使得控制Excel应用程序的语法更加简单。以下Python代码应该与dylan回答中的代码相同:

import xlwings as xw

# Connect to existing workbook containing VBA macro
wb = xw.Book(r'C:\YourBookHere.xlsm')

# Run the VBA macro named 'MacroName'
wb.macro('MacroName')()

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接