Python 呼叫 Excel VBA 自動化執行巨集程式教學與範例
使用 Python 的 pywin32 模組,串接 Excel VBA 巨集程式,自動化執行大量程式。
Python 是一種很適合用來串接各種組件,進行系統整合的程式語言,如果我們有許多 Excel 的 VBA 巨集程式,想要讓它們可以自動化執行,就可以考慮使用 Python 來處理。
Python pywin32 模組
Python 的 pywin32 模組提供了許多 Windows API 擴充功能,如果想要在 Python 中操作 Excel 或呼叫 VBA,就可以使用這個套件。請先按照 pywin32 安裝與使用教學,將 pywin32 模組安裝好。
Excel VBA 巨集程式
準備一些簡單的 Excel VBA 巨集程式,這裡我們開啟 Excel 的 VBA 巨集程式編輯器,撰寫一個子程序(Sub)與一個函數(Function):Sub hello()
MsgBox "Hello, World."
End Sub
Function hello2(name As String)
hello2 = "Hello, " & name & "!"
End Function編輯完成後,記得將檔案儲存為「Excel 啟用巨集的活頁簿(*.xlsm)」。
Excel VBA 巨集程式
Python 呼叫 Excel VBA 巨集程式
以下是一個在 Python 中開啟 Excel,執行 VBA 巨集程式的範例指令稿,對於普通的子程序(Sub)就直接以 Application.Run 執行即可,而若是有傳回值的函數(Function),也可以直接取得計算完的結果:import os
import win32com.client
# 開啟 Excel
excel = win32com.client.Dispatch("Excel.Application")
# 開啟 hello.xlsm 活頁簿檔案
excel.Workbooks.Open(Filename="C:OfficeGuidehello.xlsm")
# 執行巨集程式
excel.Application.Run("hello.xlsm!hello")
# 傳入參數,並取得計算結果
result = excel.Application.Run("hello.xlsm!hello2", "OfficeGuide.cc")
print(result)
# 離開 Excel
excel.Application.Quit()
# 清理 com 介面
del excel執行之後,就會看到由 Excel VBA 所顯示的訊息視窗:
Excel VBA 訊息視窗關閉第一個訊息視窗之後,接著即可看到由 Excel VBA 傳回 Python 的計算結果:
Excel VBA 傳回計算結果透過這樣簡單的串接方式,我們就可以使用 Python 輕易地整合大量的 Excel VBA 程式,讓執行流程自動化。
參考資料:Stack Overflow、Excel 物件模型總覽