簡體   English   中英

如何在excel之外執行vba宏

[英]how to execute vba macro outside of excel

我有一個excel電子表格,其中包含大量的VBA和包含按鈕的宏。

如何在Excel中執行VBA代碼(特別是單擊按鈕並觸發其onclick事件)來自python之外(例如)?

注意 :我願意用不同的語言來解答,比如C ++,C#或Java; 但是,到目前為止,我更喜歡它們在python中,因為它可以更平滑地連接我的python應用程序的其余部分。

注2 :我可能需要使用python excel庫之一使用python來操作excel電子表格

版本號:

Microsoft Excel Office 365 Version 1708 Build 8431.2079
python 2.7

您可以使用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()

希望這有幫助,這是我的第一篇文章。 編輯:稍微清理一下

為了擴展dylan的優秀答案:你也可以使用python xlwings包完成同樣的xlwings 從本質上講, xlwings是一個圍繞pywin32的花哨的包裝器,它允許用更簡單的語法控制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')()

此外,您還可以使用Windows任務計划程序來觸發事件。 如果按鈕單擊事件觸發代碼,則可以按照以下鏈接中的說明執行完全相同的操作。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM