作者:GYuan83_844 | 来源:互联网 | 2023-01-05 18:14
我在VBA的范围内运行Gnuplot,效果出奇的好.我可以使用GNUPLOT和Word VBA生成一本大约一百个图表的书.(使用Excel图表,我可能得到大约四个)
有一个小问题 - 在VBA下运行时,STDERR会消失,或者没有被创建.没有诊断.
鉴于以下小型GNUPLOT脚本,
set key bmargin left horizontal Right noreverse enhanced autotitle box lt black linewidth 1.000 dashtype solid
set samples 800, 800
set title "Simple Plots"
set title font ",20" norotate
DEBUG_TERM_HTIC = 119
DEBUG_TERM_VTIC = 119
plot [-30:20] sin(x*20)*atan(x)
我的VBA代码将其写入临时文件并尝试运行它.VBA生成
"C:\temp\Gnuplot\bin\gnuplot.exe" C:\Users\VVKOZLOV\AppData\Local\Temp\gnuA5E0.txt 2>"C:\Users\VVKOZLOV\AppData\Local\Temp\gnuA5E2.err"
然后使用Windows Shell运行它,如下所示调用:
Dim wsh As Object
Set wsh = VBA.CreateObject("WScript.Shell")
然后
wsh.Run x, 0, True ' x contains the generated GNUPLOT expression
GNUPLOT执行完美.
在GNUPLOT表达式中,第一项是GNUPLOT程序的位置,在我的系统上恰好是"C:\temp\Gnuplot\bin\gnuplot.exe"
.第二个文件是在Microsoft官方位置生成的临时文件C:\Users\VVKOZLOV\AppData\Local\Temp\gnuA5E0.txt
.最后是STDERR的位置,2>"C:\Users\VVKOZLOV\AppData\Local\Temp\gnuA5E2.err"
其中2>表示这是STDERR,而不是正常输出STDOUT.
现在假设我在GNUPLOT源中引入了一个故意的错误,我希望写一个包含类似内容的错误文件
scooby doo where are you?
^
"C:\Users\VVKozlov\AppData\Local\Temp\gnuEC55.txt", line 4: invalid command
使用VBA外部的常用CMD.EXE执行时,将按预期创建STDERR文件.
使用Windows Shell在VBA范围内执行时,不会创建任何STDERR文件.
我怎么能在VBA下生成这个STDERR文件?
1> 小智..:
CreateObject("WScript.Shell").Run
直接执行命令行.
输出重定向(2>
您正在使用的语法)是cmd.exe Windows命令处理器的一项功能.
你想要做的是:
使用所需的参数和重定向执行cmd.exe .
CreateObject("WScript.Shell").Exec
相反,使用它可以直接访问输入,输出和错误流.然后,如果要将它们记录到文件中,则需要从流中读取并将内容自己写入脚本中.