NO IMAGE

目的:對Office的VBA進行Command Line式的批處理。

環境:Window XP、Python 2.5、Excel 2003

步驟:

Step1: 新建待試驗Excel檔案。確認Excel的安全級別非“高”,確保Excel的巨集可以執行。在VBE環境下,插入一個模組Module1(或者在Sheet操作區域中插入Public的Sub),儲存Excel,命名為testExcel.xls,退出。程式碼如下:

Sub PythonToExcel()

       Dim finalRow as Integer
       
       finalRow=Range(“A6635”).End(xlup).Row
      
       Sheets(1).Cells(finalRow,1)=”Log Time” & ” : ” & Now()

End Sub

Step2:使用Phython IDE,在測試目錄下新建呼叫Excel的指令碼程式,儲存Python程式,命名為testPython.py,Debug,Run Module,退出。程式碼(改編自http://www.windowsdevcenter.com/pub/a/windows/2005/03/22/word_macros.html#picking_scripting_language)如下:

# batchmacro.py
# Python script for batch running Word macros

import sys
import os
import glob
from win32com.client import Dispatch

# Launch new instance of Word
wb = Dispatch(‘Excel.Application’)
wb.Visible = 1

# First argument to script is the name of the macro
macro_to_run = sys.argv[1]

# Everything else is a document on which to run macro
for arg in sys.argv[2:]:
    # Expand any wildcards that might be in the argument
    for file in glob.glob(arg):
      doc = wb.Workbooks.Open(os.path.abspath(file))
      wb.Run(macro_to_run)
      doc.Save()
      doc.Close()
wb.Quit()

Step3:cmd-〉進入你的Python目錄-〉鍵入命令

python your path/testPython.py PythonToExcel *.doc

結果:Python指令碼處理了Office文件。