2017-06-08 78 views
0

全体的な目標は、JavaScriptファイルでNode.jsを実行し、MS Access VBAを使用して出力をスクラップすることです。ここで私がテストに使用しているJavaScriptファイルがあります:次のように私は、コマンドプロンプトからこれを実行するとVBAを使用してNode.jsを実行する

// 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を使用して同じことをトリガーしたいと思います。私はそれを2つの方法で試しました。最初のものはすばやく汚れていますが、私が理解することは、StdOutで掻き分けビットを肉付けすることです。私はそれを実行すると、

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を得ることはありません:それはWScript.Shellを使用しています。

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が期待通りに表示されるので、何か起こったと思いますか?

ご協力いただきましてありがとうございます。

+0

ファイルに書き込む理由はなく、標準出力に書き込んでvbaからキャプチャするだけです。 – DusteD

+0

私は明確にすべきです:JavaScriptを使ってファイルを書くことは、JavaScriptが実行されていることを確認する方法でした。私が実際にやろうとしているのは、指定されたJavaScriptファイルからconsole.logの出力をすべて取り除くことです。まず、objExec.StdOutをキャプチャしました。それがうまくいかないときは、問題がJavaScriptが実行されていないか、console.logがキャプチャされていないかどうかを確認したいと思っていました。これまでのところ、それは前者のように見えます。 – ProdigalBulldog

答えて

0

このように実行すると、Access実行可能ファイルの場所にファイルが生成されます。あなたのアクセスがインストールされている場所を確認してください。そこにファイルがあるはずです。ノードコードでは、ファイルを生成する必要があるパスも渡す必要があります。

+0

C:\ Program Files(x86)\ Microsoft Office \ root \ Office16のmsaccess.exeの場所を確認しました。ファイルはありません。私はもともとvar outputFileのノードコードに絶対パスを持っていましたが、コマンドプロンプトから手動で実行すると、tst.jsが存在するのと同じディレクトリを目指していたので、ファイル名だけでうまくいきました。 – ProdigalBulldog

+0

'Wscript.ScriptFullName'は、スクリプトが現在ログファイルを実行している場所、またはその親フォルダにあるパスを指定します。確認し、私に知らせてください。 –

関連する問題