2014-07-17 61 views
0

無法將變量值傳遞給批處理文件:將變量值傳遞給批處理文件

在Access 2007表單按鈕上單擊時執行的VBA代碼。

idahofile = "S:\WildlifeHealth\Idaho\Incoming\test.xls」 
Call OpenWB(idahofile) 

test.bat的文件:

Call %1 

返回「VAR1」,而不是「S:\ WildlifeHealth \愛達荷州\傳入\從子程序調用OpenWB

Private Sub OpenWB(var1 As String) 
    Dim RetVal 
    RetVal = Shell("S:\WildlifeHealth\Idaho\Incoming\test.bat var1", vbNormalFocus) 
End Sub 

代碼test.xls「

如果test.bat文件:

Call S:\WildlifeHealth\Idaho\Incoming\test.xls, file opens. 

那麼如何傳遞var1的值而不是名稱var1。

我想找到一個工作,以保存在用戶關閉excel後在進程窗口中運行excel的過程。它不通過VBA以編程方式關閉。我想如果我可以將在Access中的對話框中選擇的路徑名傳遞給批處理文件,並在那裏打開它(因此不是通過Access訪問而是通過命令行),我的問題就會解決。但是,唉,我似乎無法通過變量值。

想法任何人?

也許有另一種編程語言可以處理這個問題?

回答

2

你試過替換這樣的:在您的OpenWB子的Shell功能

"S:\WildlifeHealth\Idaho\Incoming\test.bat " & var1 

"S:\WildlifeHealth\Idaho\Incoming\test.bat var1" 

這個?

爲了理解發生了什麼,您的原始代碼是在字符串文本中構造命令,即固定字符串。所以看起來你真的想通過名爲var1的論點。實際上你想要做的是替換的值爲var1,你的子參數var1。這意味着您希望在運行時構建批處理命令,這意味着您需要將提供的值var1附加到批處理文件。因此,您的原始代碼是硬編碼var1作爲參數,而更新後的代碼會將var1的任何運行時值作爲參數追加到批處理文件中。

+0

是的!因爲我想學習:爲什麼這樣做?此外,我在批處理文件中將「調用」更改爲「開始」,以便在打開電子表格後關閉批處理窗口。謝謝。 – user12059

+0

有道理。我感謝你給我提供了一個學習的時刻。 :-) – user12059

+0

@ user12059:不用擔心,這是我的榮幸。 – djikay

相關問題