2015-06-19 133 views
0

我正在編寫一個Python腳本來自動化一個使用Excel宏來格式化文件以便稍後輸入到其他程序的過程。我對Python有點新鮮,對VBA也是全新的,但我認爲我有下面的步驟。Python:在運行Excel宏時隱藏打開文件對話框

到目前爲止,我有這個運行宏本身(與幫助其他SO帖):

xl = win32com.client.DispatchEx('Excel.Application') 
xlpath = os.path.expanduser(xlfile) 
wb = xl.Workbooks.Open(Filename=xlpath, ReadOnly=1) 
xl.Run("my_macro") 

此時宏運行,並呼籲Application.GetOpenFilename()打開一個對話框供用戶選擇文件要格式化,每個宏都會有所不同。

基本上我的用戶每次運行我的腳本時都會有不同的初始數據來格式化。在開始時,我希望他們選擇他們需要格式化的文件,然後保存這些文件路徑。然後我想將這些文件路徑從Python插入到宏中,而不是在Excel中打開對話框。

有沒有辦法通過改變宏直接做到這一點?如果沒有,我是否需要用Python中的某個模塊重寫宏以驅動Excel?

回答

0

它看起來像我可以調用xl.Run("my_macro")的參數,所以我只需要弄清楚宏如何讀取這些參數,所以一旦我傳入路徑,它可以打開沒有對話框的文件。

xl.Run("my_macro", path1, path2) 

https://stackoverflow.com/a/16740500/3788802