ユーザーがサーバーに Excel ワークブックをアップロードできるようにする ColdFusion Web アプリケーションがあります。
ファイルがアップロードされたら、その Excel ファイル内でマクロを実行したいと思います。
どうすればそれを行うことができるかについて、誰かが考えを持っていますか??
注: Java オブジェクトも使用できます。すでに HSSF POI を使用してシートのコンテンツにアクセスしています。
ユーザーがサーバーに Excel ワークブックをアップロードできるようにする ColdFusion Web アプリケーションがあります。
ファイルがアップロードされたら、その Excel ファイル内でマクロを実行したいと思います。
どうすればそれを行うことができるかについて、誰かが考えを持っていますか??
注: Java オブジェクトも使用できます。すでに HSSF POI を使用してシートのコンテンツにアクセスしています。
POI および同様の Java ライブラリは、マクロを実行できません。マクロを実行するには、MS Excel アプリケーションが必要です。つまり、サーバーにインストールする必要があります。次に、COM、Excel.Interop などを介してアクセスします。
とはいえ、通常、セキュリティ上の理由から、サーバー上でマクロを実行することは望ましくありません。私の最初の質問は、このマクロは何をするのかということです。最終的に何を達成しようとしているのかを教えていただければ、よりシンプルで安全な代替手段があるかもしれません.
私はそのようなことをする方法を見つけました:
1)次のようにサーバーにVBSスクリプトファイルを書き込みます。
<cfset contentVBS =
"Dim objXL" & Chr(13) & Chr(10) &
"Set objXL = CreateObject(" & Chr(34) & "Excel.Application" & Chr(34) & ")" & Chr(13) & Chr(10) &
"With objXL" & Chr(13) & Chr(10) &
" .Workbooks.Open (" & Chr(34) & VARIABLES.Instance.filePath & VARIABLES.Instance.fileName & Chr(34) & ")" & Chr(13) & Chr(10) &
" .Application.Run " & Chr(34) & VARIABLES.Instance.macroName & Chr(34) & Chr(13) & Chr(10) &
" .Application.Quit" & Chr(13) & Chr(10) &
"End With" & Chr(13) & Chr(10) &
"Set objXL = Nothing" & Chr(13) & Chr(10)
/>
<cffile
action="write"
charset="utf-8"
file="#VARIABLES.Instance.filePath##VARIABLES.Instance.script_vbs_name#"
output="#contentVBS#"
addnewline="no"
>
はExcelVARIABLES.Instance.filePath
ファイルへのパス、はExcelファイルVARIABLES.Instance.fileName
の名前、VARIABLES.Instance.macroName
は起動するマクロの名前です。
2)cscript.exeを使用してvbsファイルを実行します。
<cfexecute name = "C:\WINDOWS\system32\cscript.exe"
arguments = "#VARIABLES.Instance.filePath##VARIABLES.Instance.script_vbs_name#">
</cfexecute>
VARIABLES.Instance.script_vbs_name
先ほど書いたVBSスクリプトファイルの名前はどこにありますか。
注:マクロはサーバー上にファイルを生成するため、ColdFusionServerにフォルダーへの読み取り/書き込みアクセスを指定する必要がありました。