Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用VBA运行Node.js_Javascript_Node.js_Vba_Ms Access_Wsh - Fatal编程技术网

Javascript 使用VBA运行Node.js

Javascript 使用VBA运行Node.js,javascript,node.js,vba,ms-access,wsh,Javascript,Node.js,Vba,Ms Access,Wsh,总体目标是在JavaScript文件上运行Node.js,并使用MS Access VBA获取输出。下面是我用来测试的JavaScript文件: // C:\Users\micha\OneDrive\AppAcademy\Interview Prep\tst.js var fs = require("fs"); var outputFile = "testLog.txt"; fs.writeFile(outputFile, new Date()); 当我从命令提示符下运行它时,它会在面试准

总体目标是在JavaScript文件上运行Node.js,并使用MS Access VBA获取输出。下面是我用来测试的JavaScript文件:

// C:\Users\micha\OneDrive\AppAcademy\Interview Prep\tst.js

var fs = require("fs");
var outputFile = "testLog.txt";

fs.writeFile(outputFile, new Date());
当我从命令提示符下运行它时,它会在面试准备文件夹中生成一个带有时间戳的testLog.txt文件

C:\Users\micha\OneDrive\AppAcademy\Interview Prep>node tst.js
现在我想在Access应用程序中使用VBA触发相同的事件。我试过两种方法。第一个是快速和肮脏的,但我的理解是,我可以肉它与StdOut为刮位。它使用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
当我运行它时,一个命令提示符在屏幕上短暂闪烁,但我没有得到一个新的testLog.txt

我试过的另一种方法更快更脏:

Private Sub runShellTest_Click()
    MsgBox (Shell("C:\Program Files\nodejs\node.exe C:\Users\micha\OneDrive\AppAcademy\Interview Prep\tst.js", vbNormalFocus))
End Sub
命令提示符再次短暂闪烁,并且没有新的testLog.txt。但是,消息框显示了预期的任务ID,因此我猜。。。发生什么事了


感谢您的帮助

这样运行时,文件将在Access可执行文件的位置生成。请检查Access的安装位置,您应该可以在那里找到该文件。在节点代码中,还必须传递需要生成文件的路径

我一直在玩成功发送xmlhttp请求的游戏。 您需要将json转换为vba字典。
有一个vba类可用于转换。

没有理由写入文件,只需写入标准输出并从vba捕获即可。我应该澄清:使用JavaScript编写文件只是一种检查以确保JavaScript正在运行的方法。我真正想做的是从一个给定的JavaScript文件中获取所有的console.log输出,我尝试的第一件事是捕获objExec.StdOut。当这不起作用时,我想看看问题是JavaScript没有运行还是console.log没有被捕获。到目前为止,它看起来像前者。@DusteD--how?我检查了msaccess.exe的位置,它是C:\Program Files(x86)\Microsoft Office\root\Office16。文件不在那里。我最初在节点代码中也有var outputFile的绝对路径,但在命令提示符下手动运行时,只需一个文件名就可以了,因为我的目标是tst.js所在的目录。
Wscript.ScriptFullName
将为您提供脚本当前执行的路径日志文件可能在那里或父文件夹中。检查一下,让我知道。