Skip to main content
Announcements
Join us at Qlik Connect for 3 magical days of learning, networking,and inspiration! REGISTER TODAY and save!
cancel
Showing results for 
Search instead for 
Did you mean: 
kentaroWakamatsu
Creator II
Creator II

Management Console からのvbs実行に関して

エクセルの加工処理を記述したVBSファイルを、QVWのリロード時に実行するスクリプトを作っており、QVWを開いてリロード実行した際には問題なくエクセルファイルが作成されるのですが、マネジメントコンソールからリロード実行すると、リロードが終了してもエクセル作成が出来ていません。

QV側の設定もしくはエクセル側の設定に足りていないところがあるのかと考えておりますが、ご存知の方はいらっしゃらないでしょうか?

10 Replies
chakiw5
Contributor III
Contributor III

VBSの実行ですがどのようにしていますか。

自分はロードスクリプトのExecute Commandでロードの最後に実行させてたことはあります。

https://help.qlik.com/ja-JP/qlikview/November2017/Subsystems/Client/Content/Scripting/ScriptRegularS...

その際にはロードスクリプトの編集画面で「外部プログラムを実行する」にチェックを付けて

ユーザープロパティのセキュリティタブで「スクリプトからのデータベースへの書込/実行ステートメントの実行を許可する」にもチェックを付けてください。

kentaroWakamatsu
Creator II
Creator II
Author

ご連絡ありがとうございます。

記載頂いた設定は行っており、スクリプトには以下のように記載しています。

   EXECUTE WScript "D:\QlikView\.......\.vbs";

デスクトップ上で開いてリロードするとうまく稼動するのですが、コンソールで動かしたときだけ動作しておらず、ログファイルにも

 ’Running an execute command’

という記載が追加されます。

テキストファイルを作成するようなVBSの記載の場合は問題ないのですが、なぜかエクセルだけ実行できないようです。

chakiw5
Contributor III
Contributor III

まさかとは思いますがサーバーにExcelはインストールされてますよね?

またはサーバーにExcelのインスタンスが残っていてそれがジャマしてるってことはないかな

kentaroWakamatsu
Creator II
Creator II
Author

コンソールから実行した際にWScriptを実行しているユーザーにエクセルが入っているのを確認し、そのユーザーのデスクトップでQVWを開いてリロード実行した際には、問題なく動いていました。

他にコンソールで動かしているvbsで、csvを開いて文字コード変換して保存する処理を行っているファイルがあるのですが、こちらは問題なく動いているので、vbs自体はコンソールから動かせているようです。

chakiw5
Contributor III
Contributor III

ユーザーさんのPCではなく、QMCが入っているPCにExcelが必要ですので確認してください。

それかQMCの入っているPCでそのQVWを直接開いてロードさせるとどうなりますか。

kentaroWakamatsu
Creator II
Creator II
Author

QMCはサーバーで動かしていまして、先程記載したユーザーとは、QMCが実行したQVWのスクリプトがWScriptを動かす際に使っているユーザーとなります。

QMCを介さずに、直接このユーザーでQVWを開いてリロードすると、問題なくエクセル作成されるのですが、QMC経由の場合だけ作成されないといった症状です。

ちなみに、どちらで実行しても、タスクマネージャー上には、このユーザーでのWScriptの実行が表示されます。

コンソールからの実行なのでCScriptの方が良いのかと思い変更してみたのですが、こちらも同症状となりました。

chakiw5
Contributor III
Contributor III

そうなるとタスクマネージャのプロセスにもExcelが残ってはいない感じでしょうか。

createobjectでExcelのインスタンスを作っていると思いますが、それが動いていないのなかぁ

kentaroWakamatsu
Creator II
Creator II
Author

タスクマネージャーのプロセスに一瞬エクセルがあがってくるので、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の処理は実行されておらず、エクセルの保存は行われていません。

chakiw5
Contributor III
Contributor III

ExcelがインストールされているローカルPCでは当たり前ですが正常にExcelが開きますね。

当方のQMCが入っているPCにはExcelがインストールされていません。

これも当然と言えば当然でそのQMCのPCでQVWを直接開きリロードすると「Excelコンテンツを

作成できない」としっかりエラーが出ます。

このエラーがそちらの環境で出ないということはExcelが入っている環境だと思います。

後はVBSのコード1つ1つを検証する意味でMsgBox等でどこが引っ掛かっているか調べるしか

ないのかなぁ、自分は切羽詰まればこれもたまにやります。

申し訳ないですが当方の環境ではこれ以上検証できませんでした。