如何在Excel以外执行vbamacros

我有一个Excel电子表格,包含大量的VBA和包含一个button的macros。

如何在Excel中执行Excel中的VBA代码(特别是单击button并触发其onclick事件)?

注意 :我愿意用C ++,C#或Java等不同的语言来回答问题。 但是,到目前为止,我更喜欢python,因为它会更顺利地连接到我的python应用程序的其余部分。

注2 :我可能需要使用Python中的一个可用的python excel库来操纵excel电子表格

版本号码:

Microsoft Excel Office 365 Version 1708 Build 8431.2079 python 2.7 

要扩展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')() 

您可以使用win32com库通过Python与COM对象进行交互。 你可以用pip安装win32com库。 至less我是这样做的。 本质上,您不是单击工作表上的button,而是调用VBA代码中embedded的子例程在工作表上运行。

另外,我使用了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() 

希望这有助于,这是我的第一篇文章。 编辑:清理一些事情

另外,您还可以使用Windows任务计划程序来触发事件。 如果button点击事件触发代码,则可以按照以下链接中的说明执行完全相同的操作。

https://www.sevenforums.com/tutorials/11949-elevated-program-shortcut-without-uac-prompt-create.html

另外,你需要一个Workbook-open-event,所以,像这样…

 Private Sub Workbook_Open() Msgbox "Welcome to ANALYSIS TABS" End Sub