2017-06-08 22 views
0

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!

+0

Es gibt keinen Grund, in eine Datei zu schreiben, schreibe einfach in die Standardausgabe und erfasse sie von vba. – DusteD

+0

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

Antwort

0

Wenn Sie es so ausführen, wird die Datei am Speicherort der ausführbaren Access-Datei generiert. Bitte überprüfen Sie, wo sich Ihr Access installiert hat. Dort sollten Sie die Datei finden. Im Knotencode müssen Sie auch den Pfad übergeben, in dem die Datei generiert werden muss.

+0

Ich habe den Speicherort von msaccess.exe überprüft, also C: \ Programme (x86) \ Microsoft Office \ root \ Office16. Die Datei ist nicht da. Ich hatte ursprünglich auch einen absoluten Pfad in meinem Knoten-Code für var outputFile, aber wenn ich es manuell von der Eingabeaufforderung aus ausführte, funktionierte es gut mit nur einem Dateinamen, da ich auf dasselbe Verzeichnis zielte, in dem tst.js lebt. – ProdigalBulldog

+0

'Wscript.ScriptFullName' gibt Ihnen den Pfad, in dem das Skript die Protokolldatei gerade ausführt, möglicherweise dort oder in seinem übergeordneten Ordner. Überprüfe und lass es mich wissen. –

Verwandte Themen