Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
エクセルの加工処理を記述したVBSファイルを、QVWのリロード時に実行するスクリプトを作っており、QVWを開いてリロード実行した際には問題なくエクセルファイルが作成されるのですが、マネジメントコンソールからリロード実行すると、リロードが終了してもエクセル作成が出来ていません。
QV側の設定もしくはエクセル側の設定に足りていないところがあるのかと考えておりますが、ご存知の方はいらっしゃらないでしょうか?
VBSの実行ですがどのようにしていますか。
自分はロードスクリプトのExecute Commandでロードの最後に実行させてたことはあります。
その際にはロードスクリプトの編集画面で「外部プログラムを実行する」にチェックを付けて
ユーザープロパティのセキュリティタブで「スクリプトからのデータベースへの書込/実行ステートメントの実行を許可する」にもチェックを付けてください。
ご連絡ありがとうございます。
記載頂いた設定は行っており、スクリプトには以下のように記載しています。
EXECUTE WScript "D:\QlikView\.......\.vbs";
デスクトップ上で開いてリロードするとうまく稼動するのですが、コンソールで動かしたときだけ動作しておらず、ログファイルにも
’Running an execute command’
という記載が追加されます。
テキストファイルを作成するようなVBSの記載の場合は問題ないのですが、なぜかエクセルだけ実行できないようです。
まさかとは思いますがサーバーにExcelはインストールされてますよね?
またはサーバーにExcelのインスタンスが残っていてそれがジャマしてるってことはないかな
コンソールから実行した際にWScriptを実行しているユーザーにエクセルが入っているのを確認し、そのユーザーのデスクトップでQVWを開いてリロード実行した際には、問題なく動いていました。
他にコンソールで動かしているvbsで、csvを開いて文字コード変換して保存する処理を行っているファイルがあるのですが、こちらは問題なく動いているので、vbs自体はコンソールから動かせているようです。
ユーザーさんのPCではなく、QMCが入っているPCにExcelが必要ですので確認してください。
それかQMCの入っているPCでそのQVWを直接開いてロードさせるとどうなりますか。
QMCはサーバーで動かしていまして、先程記載したユーザーとは、QMCが実行したQVWのスクリプトがWScriptを動かす際に使っているユーザーとなります。
QMCを介さずに、直接このユーザーでQVWを開いてリロードすると、問題なくエクセル作成されるのですが、QMC経由の場合だけ作成されないといった症状です。
ちなみに、どちらで実行しても、タスクマネージャー上には、このユーザーでのWScriptの実行が表示されます。
コンソールからの実行なのでCScriptの方が良いのかと思い変更してみたのですが、こちらも同症状となりました。
そうなるとタスクマネージャのプロセスにもExcelが残ってはいない感じでしょうか。
createobjectでExcelのインスタンスを作っていると思いますが、それが動いていないのなかぁ
タスクマネージャーのプロセスに一瞬エクセルがあがってくるので、CreateObjectは動いてSaveが動いていないのかとも思ったのですが、テスト用に処理を絞り込んでかつエラー処理をコメントアウトし、以下のように単純にファイルを開いて保存するだけの記述の場合でも、QMCで実行するとタスクマネージャーのプロセスにWScriptが表示されたままとなり、QMC側のリロードが終わらない状態になるので、VBSの処理が途中で止まってQVWのスクリプトに戻ってきていないような感じです。
なお、この際、タスクマネージャーのプロセスからWScriptを終了するとQVWのリロードが再開し保存されますが、エクセル処理は実行されておらず、プロセス上にもエクセルが残ったままになります。
Sub Main ()
Dim objShell
Dim objExcel
Dim objWorkbook
Dim objWorksheet
Set objShell = CreateObject("Wscript.Shell")
'On Error Resume Next
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open("エクセルファイルパス")
Set objWorksheet = objWorkbook.Worksheets("Sheet1")
objExcel.Visible = False
objWorkbook.Save
objExcel.Quit
Set objWorksheet = Nothing
Set objWorkbook = Nothing
Set objExcel = Nothing
End Sub
Main
スクリプト内の'On Error Resume Next'のコメントアウトを戻してリロード実行した場合は、タスクマネージャーにWScriptが表示され続ける事も無くQVWのリロードも終了し、QVWは保存されますが、このときVBSの処理は実行されておらず、エクセルの保存は行われていません。
ExcelがインストールされているローカルPCでは当たり前ですが正常にExcelが開きますね。
当方のQMCが入っているPCにはExcelがインストールされていません。
これも当然と言えば当然でそのQMCのPCでQVWを直接開きリロードすると「Excelコンテンツを
作成できない」としっかりエラーが出ます。
このエラーがそちらの環境で出ないということはExcelが入っている環境だと思います。
後はVBSのコード1つ1つを検証する意味でMsgBox等でどこが引っ掛かっているか調べるしか
ないのかなぁ、自分は切羽詰まればこれもたまにやります。
申し訳ないですが当方の環境ではこれ以上検証できませんでした。