我被vba excel宏困住了。我需要的是有一个宏来执行以下两件事:
创建一个空文本文件,该文件将存储在用户的%USERPROFILE%\ filename.txt或%TMP%\ filename.txt中。
将Shell()命令的内容输出到上面第1点中创建的文件。例如,DOS等效于" ipconfig> %TMP%\ filename.txt"或类似的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()调用它似乎不起作用。
有人可以帮助我实现目标吗?
由于
答案 0 :(得分:1)
首先,如果您想要来自此社区的回复,您应该格式化该代码。但...
你走在正确的轨道上。 Environ("var")
可以与任何Windows环境变量一起使用。我在程序中使用了environ("userprofile")
和environ("username")
。 Environ("userprofile") & "\textfile.txt"
应该有用。
您不需要call
shell
,您可以自行执行Shell
。如果您想要管道输出或运行控制台命令,那么您需要执行以下操作:
Shell "cmd.exe /k ipconfig >G:\text.txt", vbHide
希望这有帮助!
答案 1 :(得分:1)
是的,似乎我的问题没有被正确诊断出来。我的剧本中有一些比赛条件。在下一行代码被删除之前,Shell的文件创建没有及时完成。该行正在读取本应由Shell命令创建的文件。因此出现了错误53.在设置应用程序等待几秒钟之后,文件在下一行文件访问之前成功创建。 谢谢你的帮助