vba excel使用环境变量为文件路径创建文件

时间:2015-12-15 00:12:39

标签: vba shell

我被vba excel宏困住了。我需要的是有一个宏来执行以下两件事:

  1. 创建一个空文本文件,该文件将存储在用户的%USERPROFILE%\ filename.txt或%TMP%\ filename.txt中。

  2. 将Shell()命令的内容输出到上面第1点中创建的文件。例如,DOS等效于" ipconfig> %TMP%\ filename.txt"或类似的DOS命令。

  3. %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()调用它似乎不起作用。

    有人可以帮助我实现目标吗?

    由于

2 个答案:

答案 0 :(得分:1)

首先,如果您想要来自此社区的回复,您应该格式化该代码。但...

  1. 你走在正确的轨道上。 Environ("var")可以与任何Windows环境变量一起使用。我在程序中使用了environ("userprofile")environ("username")Environ("userprofile") & "\textfile.txt"应该有用。

  2. 您不需要call shell,您可以自行执行Shell。如果您想要管道输出或运行控制台命令,那么您需要执行以下操作:

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

  3. 希望这有帮助!

答案 1 :(得分:1)

是的,似乎我的问题没有被正确诊断出来。我的剧本中有一些比赛条件。在下一行代码被删除之前,Shell的文件创建没有及时完成。该行正在读取本应由Shell命令创建的文件。因此出现了错误53.在设置应用程序等待几秒钟之后,文件在下一行文件访问之前成功创建。 谢谢你的帮助