2016-12-07 114 views
1

我試圖從VBA運行shell命令並獲取輸出到csv文件。下面是我使用的代碼:使用VBA運行並保存命令輸出

Dim wsh as Object 
Set wsh = VBA.CreateObject("WScript.Shell") 
plink_path="C:\plink.exe" 
key_path="putty key path" 
pass_query="select * from test" 
command1 = Replace(plink_path & " [email protected] -i " & key_path & " mysql -uuser -ppass -e 'use radar;" & pass_query & "'", Chr(10), " ") 
wsh.Run command1 & ">E:/anurag.csv", 0, True 

但我無法查看E驅動器中的輸出文件。當我從cmd提示符手動運行上述命令時,我確實在E驅動器中獲得了輸出。

+1

如果將輸出發送到STDOUT,[這樣的事情可能](https://msdn.microsoft.com/en-us/library/cbxxzwb5(V = vs.84).aspx)有用。 – Comintern

回答

1

兩個想法:

  1. 嘗試的E:\anurag.csv代替E:/anurag.csv
  2. 使用cmd調用plink,因爲cmd通常處理重定向。與更換wsh.Run行:

    command1 = command1 & ">E:\anurag.csv" 
    command1 = "cmd /c """ & command1 & """" 
    wsh.Run command1, 0, True 
    

    第一行完成你想要執行的命令和第二把它包裝在cmd /c通話。

    • 如果這不起作用,嘗試以上/c /sthis answer改變/c

YMMV - 未測試

+0

當我使用command1 =「cmd/c」「」&command1&「」「」時,它完美運行。 – anurag

相關問題