2015-04-23 76 views
0

我想在運行ipython筆記本(使用runipy)之前運行一個使用shell腳本的VBA模塊來執行其他操作,但是我的ipython筆記本腳本需要輸入,這些設置使用環境變量。執行VBA shell腳本設置環境變量

這裏的VBA我到目前爲止:

rundate = Range("b1").Value 
shellScript = "runipy C:\argstest.ipynb" 

Dim wsh As Object 
Set wsh = VBA.CreateObject("WScript.Shell") 
Dim waitOnReturn As Boolean: waitOnReturn = True 
Dim windowStyle As Integer: windowStyle = 1 

Set wshSystemEnv = wsh.Environment("SYSTEM") 
wshSystemEnv("CURRWK") = rundate 

如果我然後運行:

MsgBox (wshSystemEnv("CURRWK")) 

的結果是正確的:

2015-04-17 

不過,如果我繼續和執行我的shell腳本,它不承認這個變量

Set WshShellExec = wsh.exec(shellScript) 
Range("a1").Value = WshShellExec.StdErr.ReadAll 

讓我發現,蟒蛇運行時,它得到一個關鍵的錯誤:

KeyError: 'CURRWK' 

如果我刪除VBA和直接在命令行中運行這個,我會做這樣的:

set CURRWK=2015-04-17 
runipy C:\Python27\Programs\ipython\ACT\argstest.ipynb 

如何獲得在VBA中創建的shell來創建新的環境變量,以便python腳本在執行時可以看到它?

謝謝!

回答

1

你試過Process而不是SYSTEM?您的VBA可能沒有修改系統級變量的權利。 (「但它可以在設置後讀回它,」你說,沒錯,但是你的腳本可能啓用了註冊表虛擬化。)過程最接近模擬命令行SET語句,因爲該更改僅適用於當前進程和子進程並沒有堅持下去。

+0

繁榮!非常感謝,就這樣做了。 – flyingmeatball

相關問題