Posted at

【ColdFusion】cfexecuteからexcelを開くスクリプトが動作しない


やろうとしたこと

エクセルのマクロをCFから実行するために、マクロ起動用のVBScriptを作って実行しようとしたんですが。


runExcelMacro.cfm

batchFilename = "c:\runExcelMacro.vbs";

variousParameters = '"#エクセルファイルのパス#" #実行するマクロ名#';
cfexecute(name="cmd", arguments="/C #batchFilename# #variousParameters#");


runExcelMacro.vbs

Dim obj

Set obj=WScript.CreateObject("Excel.Application")

obj.DisplayAlerts = False
obj.Workbooks.Open WScript.Arguments(0)
obj.Application.Run WScript.Arguments(1)

obj.Workbooks.Close
obj.Quit



どうなった?

なんか動かない。VBScriptからログ吐くようにしてみると、どうやらWorkbooks.Openに失敗している様子。

でも、直接VBScriptを実行すると問題なく動くんですよ・・・なぜだ。


解決方法を見つけたよ

Run VBScript using CFExecute throws error but works fine via command line

Windows Serverのバグ・・・だと・・・。(脱力)

使ってるのはWindows Server 2016なんですが、まだ直っていないんですね。

自分の場合、C:\Windows\System32\config\systemprofileに"Desktop"フォルダを追加するだけでいけました。

3時間くらいハマった・・・。