2015-03-02 21 views
0
Public Sub Run_Calibrate(sector As String) 
Dim runString As String 
Dim kwargs As String 


kwargs = "{" & "'pd_grade_o':" & "[" & _ 
        pd_array(0) & ", " & pd_array(1) & ", " & pd_array(2) & ", " & _ 
        pd_array(3) & ", " & pd_array(4) & ", " & pd_array(5) & ", " & _ 
        pd_array(6) & ", " & pd_array(7) & ", " & pd_array(8) & ", " & _ 
        pd_array(9) & ", " & pd_array(10) & ", " & pd_array(11) & "], " & _ 
       "'ue_rate_6_o':" & "[" & _ 
        ue_rate_6_o(0) & ", " & ue_rate_6_o(1) & ", " & ue_rate_6_o(2) & ", " & _ 
        ue_rate_6_o(3) & ", " & ue_rate_6_o(4) & ", " & ue_rate_6_o(5) & ", " & _ 
        ue_rate_6_o(6) & ", " & ue_rate_6_o(7) & ", " & ue_rate_6_o(8) & ", " & _ 
        ue_rate_6_o(9) & ", " & ue_rate_6_o(10) & ", " & ue_rate_6_o(11) & "], " & _ 
       "'sbli_yoy_o':" & "[" & _ 
        sbli_yoy_o(0) & ", " & sbli_yoy_o(1) & ", " & sbli_yoy_o(2) & ", " & _ 
        sbli_yoy_o(3) & ", " & sbli_yoy_o(4) & ", " & sbli_yoy_o(5) & ", " & _ 
        sbli_yoy_o(6) & ", " & sbli_yoy_o(7) & ", " & sbli_yoy_o(8) & ", " & _ 
        sbli_yoy_o(9) & ", " & sbli_yoy_o(10) & ", " & sbli_yoy_o(11) & "], " & _ 
       "'nfpr_6_o':" & "[" & _ 
        nfpr_6_o(0) & ", " & nfpr_6_o(1) & ", " & nfpr_6_o(2) & ", " & _ 
        nfpr_6_o(3) & ", " & nfpr_6_o(4) & ", " & nfpr_6_o(5) & ", " & _ 
        nfpr_6_o(6) & ", " & nfpr_6_o(7) & ", " & nfpr_6_o(8) & ", " & _ 
        nfpr_6_o(9) & ", " & nfpr_6_o(10) & ", " & nfpr_6_o(11) & "], " 

kwargs = kwargs & _ 
     "'60':" & "[" & _ 
     w_60(0) & ", " & w_60(1) & ", " & w_60(2) & "], " & _ 
     "'90':" & "[" & _ 
     w_90(0) & ", " & w_90(1) & ", " & w_90(2) & "], " & _ 
     "'120':" & "[" & _ 
     w_120(0) & ", " & w_120(1) & ", " & w_120(2) & "], " & _ 
     "'150':" & "[" & _ 
     w_150(0) & ", " & w_150(1) & ", " & w_150(2) & "], " & _ 
     "'180':" & "[" & _ 
     w_180(0) & ", " & w_180(1) & ", " & w_180(2) & "]}" 

Debug.Print kwargs 
runString = Chr(34) & "import DQforecast; DQforecast.calibrate('" & sector & "', " & kwargs & ")" & Chr(34) 
Debug.Print runString 


RunPython (runString) 

End Sub 

xlwings可以處理在方法調用中傳遞的kwargs嗎?我得到一個Doex xlwings處理python調用中的參數?

File "<string>", line 1 
invalid syntax 

使得PYTHON_WIN和PYTHON_PATH是正確的,我配置了我xlwings的設置,我已經成功地從xlwings參數運行的功能。

+0

你的Python代碼是什麼樣的?考慮將它粘貼到github的要點中。雖然xlwings還沒有真正爲這個用例設計,但簡單的事情應該是可能的。你的看起來像一個簡單的東西... – 2015-03-03 08:18:04

回答

0

按照docs,是的。

代碼的問題反映在語法高亮本身中。您在調用RunPython的右括號之前沒有關閉字符串。以下代碼應該可以工作:

Sub test() 
RunPython("import DQforecast; DQforecast.calibrate('OP Dealer')") 
end Sub 
+0

我的歉意,我寫了很快,忘了「,但真正的錯誤不是這樣,我上面發佈了完整的代碼...我試圖通過一對夫婦字典通過校準方法。輸出的runString:'「導入DQforecast; DQforecast.calibrate('OP Dealer',{'pd_grade_o':[,,,,,,,,,],'ue_rate_6_o':[,,,,,,,,,],'sbli_yoy_o': [,,,,,,,,,,],'nfpr_6_o':[,,,,,,,,,,],'60':[,,],'90':[,,],, '120':[,,],'150':[,,],'180':[,,]})「' – asdf 2015-03-02 22:47:49

+0

並且假設所有的值都被填充... – asdf 2015-03-02 22:49:35

+0

而且我已經通過了文檔,沒有一個示例或提及的參數通過RunPython函數中的方法調用傳遞 – asdf 2015-03-02 23:16:40