VBA의 경계에서 Gnuplot을 실행 중이며 놀라 울 정도로 잘 작동합니다. GNUPLOT과 Word VBA를 사용하여 약 100 개의 그래프로 된 전체 책을 만들 수 있습니다. (Excel 그래프를 사용하면 약 4가 될 수 있습니다.)GNUPLOT 대 VBA - STDERR은 어디로 갔습니까?
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"
를 생성과 같이 호출 윈도우 쉘, 그것을 실행 :
Dim wsh As Object
Set wsh = VBA.CreateObject("WScript.Shell")
다음
wsh.Run x, 0, True ' x contains the generated GNUPLOT expression
GNUPLOT 완벽하게 실행합니다.
GNUPLOT 표현식에서 첫 번째 항목은 내 시스템에서 "C:\temp\Gnuplot\bin\gnuplot.exe"
인 GNUPLOT 프로그램의 위치입니다. 두 번째 파일은 공식 Microsoft 위치 C:\Users\VVKOZLOV\AppData\Local\Temp\gnuA5E0.txt
에서 생성 된 임시 파일입니다. 마지막은 STDERR의 위치입니다. 2>"C:\Users\VVKOZLOV\AppData\Local\Temp\gnuA5E2.err"
2>는 이것이 정상 출력 STDOUT이 아니라 STDERR임을 나타냅니다.
지금 나는 GNUPLOT 소스에 의도적 인 오류를 소개 가정, 내가 VBA의 외부 보통 CMD.EXE에 실행되면
scooby doo where are you?
^
"C:\Users\VVKozlov\AppData\Local\Temp\gnuEC55.txt", line 4: invalid command
같은 것을 포함 작성된 오류 파일을 기대할 수는 STDERR 파일이 만들어집니다 예상대로
Windows 셸을 사용하여 VBA의 경계에서 실행될 때 STDERR 파일이 만들어지지 않습니다.
이 STDERR 파일을 VBA에서 어떻게 생성 할 수 있습니까?
'CmdLine = "CMD/S/C" ""& CmdLine & "" ""'처럼 전체 명령 줄을 감싸십시오. 이것들은 마법의 단어입니다. – Ben
https://stackoverflow.com/questions/2075886/capturing-output-from-wshshell-exec-using-windows-script-host/9063149#9063149 – Ben
감사합니다. Ben. 그것은 그 마법의 따옴표입니다. –