V. *_*lov 2 vbscript vba gnuplot excel-vba word-vba
我在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)
Run Code Online (Sandbox Code Playgroud)
我的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"
Run Code Online (Sandbox Code Playgroud)
然后使用Windows Shell运行它,如下所示调用:
Dim wsh As Object
Set wsh = VBA.CreateObject("WScript.Shell")
Run Code Online (Sandbox Code Playgroud)
然后
wsh.Run x, 0, True ' x contains the generated GNUPLOT expression
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
使用VBA外部的常用CMD.EXE执行时,将按预期创建STDERR文件.
使用Windows Shell在VBA范围内执行时,不会创建任何STDERR文件.
我怎么能在VBA下生成这个STDERR文件?
小智 5
CreateObject("WScript.Shell").Run
直接执行命令行.
输出重定向(2>
您正在使用的语法)是cmd.exe Windows命令处理器的一项功能.
你想要做的是:
CreateObject("WScript.Shell").Exec
相反,使用它可以直接访问输入,输出和错误流.然后,如果要将它们记录到文件中,则需要从流中读取并将内容自己写入脚本中. 归档时间: |
|
查看次数: |
211 次 |
最近记录: |