• 跳至主要導覽
  • 跳至主要內容
  • 跳至主要資訊欄
Office 指南

Office 指南

辦公室工作實用教學

  • Excel
  • Word
  • PowerPoint
  • Windows
  • PowerShell
  • R

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 巨集程式
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 訊息視窗

關閉第一個訊息視窗之後,接著即可看到由 Excel VBA 傳回 Python 的計算結果:

Excel VBA 傳回計算結果
Excel VBA 傳回計算結果

透過這樣簡單的串接方式,我們就可以使用 Python 輕易地整合大量的 Excel VBA 程式,讓執行流程自動化。

參考資料:Stack Overflow、Excel 物件模型總覽

分類:Excel, Python 標籤:VBA

讀者互動方式

發佈留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

主要資訊欄

搜尋

近期文章

  • C++ 語言使用 Crypto++ 實作 RSA 數位簽章教學與範例
  • C++ 語言使用 Crypto++ 實作 RSA-OAEP 搭配 SHA256 加密教學與範例
  • C++ 語言使用 Crypto++ 實作 AES 加密、解密、認證加密教學與範例
  • C++ 語言使用 Crypto++ 實作 MD5、SHA1、SHA2、BLAKE2 雜湊教學與範例
  • Ubuntu Linux 安裝、使用 Crypto++ 加密函式庫教學與範例
  • C 語言使用 OpenSSL 實作橢圓曲線 ECDH 金鑰交換教學與範例
  • Python 以 eciespy 實作 ECC 非對稱式加密方法教學與範例
  • C 語言使用 OpenSSL 實作 PBKDF2 教學與範例

推薦網站

  • Udemy 線上教學課程
  • Coursera 線上教學課程

關注本站

  • 電子郵件
  • Facebook

公益

  • 家扶基金會
  • 台灣世界展望會
  • Yahoo 奇摩公益
  • igiving 公益網
  • 兒福聯盟

Copyright © 2021 · Office Guide