やろうとしたこと
エクセルのマクロを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時間くらいハマった・・・。