1. 程式人生 > 電腦技巧 >Python 呼叫 Excel VBA 自動化執行巨集程式教學與範例

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 物件模型總覽