2017-08-02 87 views
1

我想在Excel中編寫VBA宏以調用python腳本。 python腳本將執行一些命令,然後返回一個熊貓數據框。我有寫入Excel電子表格的代碼,它位於python腳本中。編寫VBA宏以使用xlwings調用python腳本

我已經安裝了xlwings並閱讀了VBA宏指令,但仍然感到困惑。我應該使用用戶定義的功能嗎?我需要在腳本中「返回任何內容」嗎?

回答

2

如果您的Python腳本直接寫入工作簿,這並不困難。首先,如果你寫入工作簿對你來說足夠,你不需要從VBA宏或Python中返回任何東西。

您不需要UDF。所有你需要的是下面的(我已經基本上從xlwings官方文檔here複製):

1)確保您的Excel工作簿可以跟文件你有你的腳本(使用命令xlwings quickstart <project_name>上做得最好在命令行,然後複製你的腳本生成的Python的文件。

2)確保你可以調用你喜歡__main__()單一功能所需要的一切(或準備的execfile運行或類似的東西)

3 )轉到你的Excel書籍並製作一個命令按鈕,然後爲其指定一個xlwings爲您提供的宏SampleCall

4)現在打開VBA編輯器。您應該立即看到SampleCall宏:

Sub SampleCall() 
    RunPython ("import testproj;testproj.world()") 
End Sub 

只需編輯testprojworld適當的名稱。

您現在可以點擊CommandButton來執行腳本!

+0

testproj是項目名稱和世界名稱的python文件。我會給它一個! – jenkelblankel

+0

testproj是Python文件的名稱,world是要從文件執行的函數的名稱。 RunPython函數實際上將執行Python代碼,因此導入語句的工作方式與正常Python文件中的相同。祝你好運! –