2015-12-15 241 views
0

我堅持使用vba excel宏。我需要的是有一個宏,做以下兩件事情:vba excel使用環境變量創建文件路徑文件

  1. 創建將存儲無論是在用戶的%USERPROFILE%\ FILENAME.TXT或%TMP%\ FILENAME.TXT一個空的文本文件。

  2. 將Shell()命令的內容輸出到上面第1點創建的文件中。例如,與「ipconfig>%TMP%\ filename.txt」或類似的DOS命令等效的DOS。

的%USERPROFILE%和%TMP%將包含空格作爲用戶名是 「First_NameLast_Name」。

我一直在尋找這個簡單而平凡的任務的一些例子,但我無法實現我想要的。我找不到運行時錯誤53文件。我已經嘗試的示例代碼:

Sub CreateAfile() 
    Dim MyPath As String 
    MyPath = Environ$("TMP") & "\filename.txt" 
    'MsgBox MyPath 
    Call Shell("ipconfig > " & MyPath, vbHide) 
End Sub 

myPath變量中上述似乎產生正確的文件名的路徑,由MSGBOX至少使用時。然而,從Shell()調用它似乎並不奏效。

有人可以幫助我實現我的目標嗎?

感謝

回答

1

首先,如果你想從這個社會的迴應你應該格式化代碼。但是...

  1. 你是在正確的軌道上。 Environ("var")可以與任何windows環境變量一起使用。我在程序中使用environ("userprofile")environ("username")Environ("userprofile") & "\textfile.txt"應該可以工作。

  2. 你不需要callshell,你可以自己做Shell。如果你是要去想一個管道輸出,或運行控制檯命令,那麼你需要做的是這樣的:

    Shell "cmd.exe /k ipconfig >G:\text.txt", vbHide

希望這有助於!

+1

對不起,第一次使用,沒有RTFM在凌晨2點發布。從我上面的示例中,正確創建了MyPath以反映文件路徑。但是,我無法弄清楚如何從Shell中使用它。在你列出的第二個例子中,如果我手動輸入路徑,它似乎工作。但是,對於每個用戶來說,路徑會有所不同,我需要使用一個變量來反映這一點。而不是使用固定路徑。我如何將MyPath變量傳遞給Shell命令。使用MyPath $,因爲我在谷歌的幾個例子中看過似乎沒有工作。也許有更優雅的方式? – Andrei

1

沒錯,看起來我的問題沒有被正確診斷。我的劇本中有一些賽車條件。在下一行代碼被執行之前,Shell的文件創建工作沒有及時完成。該行讀取應該由Shell命令創建的文件。因此出現了錯誤53.將應用程序設置爲等待幾秒鐘後,文件在下一行訪問文件之前成功創建。 感謝您的全力幫助

相關問題