Das allgemeine Ziel besteht darin, Node.js für eine JavaScript-Datei auszuführen und die Ausgabe mithilfe von MS Access VBA zu scrappen. Hier ist die JavaScript-Datei Ich bin zu Test:Ausführen von Node.js mit VBA
// C:\Users\micha\OneDrive\AppAcademy\Interview Prep\tst.js
var fs = require("fs");
var outputFile = "testLog.txt";
fs.writeFile(outputFile, new Date());
Wenn ich dies von der Eingabeaufforderung wie folgt, es erzeugt eine testLog.txt Datei mit einem Zeitstempel in dem Interview Prep Ordner.
C:\Users\micha\OneDrive\AppAcademy\Interview Prep>node tst.js
Jetzt möchte ich die gleiche Sache mit VBA aus einer Access App auslösen. Ich habe es auf zwei Arten versucht. Der erste ist schnell und schmutzig, aber mein Verständnis ist, dass ich es mit StdOut für das Kratzen Bit ausstatten kann. Es verwendet WScript.Shell:
Private Sub runShellTest_Click()
Dim objShell As Object, objExec As Object
Set objShell = CreateObject("WScript.Shell")
Set objExec = objShell.Exec("C:\Program Files\nodejs\node.exe C:\Users\micha\OneDrive\AppAcademy\Interview Prep\tst.js")
End Sub
Wenn ich es, eine Eingabeaufforderung kurz blinkt Bildschirm laufen, aber ich habe keine neue testLog.txt bekommen.
Die andere Art und Weise habe ich versucht, ist noch schneller und dreckiger:
Private Sub runShellTest_Click()
MsgBox (Shell("C:\Program Files\nodejs\node.exe C:\Users\micha\OneDrive\AppAcademy\Interview Prep\tst.js", vbNormalFocus))
End Sub
Auch die Eingabeaufforderung blinkt kurz auf, und es gibt keine neuen testLog.txt. Das Meldungsfeld zeigt jedoch eine Task-ID wie erwartet, also denke ich ... etwas ist passiert?
Jede Hilfe wird geschätzt!
Es gibt keinen Grund, in eine Datei zu schreiben, schreibe einfach in die Standardausgabe und erfasse sie von vba. – DusteD
Ich sollte klarstellen: Verwenden von JavaScript, um eine Datei zu schreiben, war nur eine Möglichkeit, um sicherzustellen, dass das JavaScript ausgeführt wurde. Ich versuche wirklich, alle console.log-Ausgaben von einer gegebenen JavaScript-Datei zu scrappen, und das erste, was ich versuchte, war objExec.StdOut zu erfassen. Wenn das nicht funktionierte, wollte ich sehen, ob das Problem darin bestand, dass JavaScript nicht ausgeführt wurde oder die console.logs nicht erfasst wurden. Bisher sieht es wie Erster aus. – ProdigalBulldog