Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
vba excel使用文件路径的环境变量创建文件_Vba_Shell - Fatal编程技术网

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

vba excel使用文件路径的环境变量创建文件,vba,shell,Vba,Shell,我被vba excel宏卡住了。我需要的是一个宏,它可以完成以下两件事: 创建一个空文本文件,该文件将存储在用户的%USERPROFILE%\filename.txt或%TMP%\filename.txt中 将Shell()命令的内容输出到上面第1点中创建的文件中。例如,相当于“ipconfig>%TMP%\filename.txt”的DOS命令或类似的DOS命令 %USERPROFILE%和%TMP%将包含空格,因为用户名是“First\u Name last\u Name” 我一直在寻找这个

我被vba excel宏卡住了。我需要的是一个宏,它可以完成以下两件事:

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

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

  • %USERPROFILE%和%TMP%将包含空格,因为用户名是“First\u Name last\u 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()调用时,它似乎不起作用

    有人能帮我实现我的目标吗


    谢谢

    首先,如果您想得到社区的响应,您可能应该格式化代码。但是

  • 你在正确的轨道上<代码>环境(“var”)可与任何windows环境变量一起使用。我在程序中大量使用
    environ(“userprofile”)
    environ(“username”)
    <代码>环境(“用户配置文件”)和“\textfile.txt”应该可以工作

  • 您不需要调用
    shell
    ,只需自己执行shell。如果要使用管道输出,或运行控制台命令,则需要执行以下操作:

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


  • 希望这有帮助

    对,我的问题似乎没有得到正确的诊断。在我的剧本中有一点赛车的情节。在执行下一行代码之前,Shell中的文件创建没有及时完成。这一行正在读取应该由Shell命令创建的文件。因此出现了错误53。将应用程序设置为等待几秒钟后,在下一行访问文件之前,文件已成功创建。
    感谢您的帮助

    抱歉,第一次使用,在凌晨2点发布时未使用RTFM。根据上面的示例,正确创建MyPath以反映文件路径。但是,我不知道如何从Shell中使用它。在您列出的第二个示例中,如果我手动输入路径,它似乎可以工作。但是,对于每个用户,路径都是不同的,我需要使用一个变量来反映这一点。而不是使用固定路径。如何将MyPath变量传递给Shell命令。使用MyPath$就像我在google上的几个例子中读到的那样,似乎不起作用。也许有更优雅的方式?