gpt4 book ai didi

vba - GNUPLOT 与 VBA - STDERR 去了哪里?

转载 作者:行者123 更新时间:2023-12-03 13:40:15 26 4
gpt4 key购买 nike

我在 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 文件?

最佳答案

CreateObject("WScript.Shell").Run直接执行命令行。

输出重定向(您使用的 2> 语法)是 cmd.exe Windows 命令处理器的一项功能。

您想要做的是:

  1. 使用 arguments 执行 cmd.exe以及您想要的重定向。
  2. 使用CreateObject("WScript.Shell").Exec相反,它使您可以直接访问输入、输出和错误流。然后您需要 read from the stream如果您希望将内容记录到文件中,请在脚本中自行将内容写入文件。

关于vba - GNUPLOT 与 VBA - STDERR 去了哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47717851/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com