内部マクロ インタープリタ
QlikView オブジェクトには、組み込みのスクリプト エンジンを使用して、QlikView 内からオートメーションを介してアクセスすることもできます。
マクロの呼び出し
QlikView ドキュメント内の VBScript または JScript で記述されたマクロは、複数の方法で呼び出すことができます。
ドキュメント イベント:
- QlikView ドキュメントを開いた後にマクロを実行できます。
- スクリプトを再実行した後にマクロを実行できます。
- データの削除コマンドの後にマクロを実行できます。
- ドキュメント内の任意の項目で選択が行われた後にマクロを実行できます。
- ドキュメント内の任意の変数値が変更されるとマクロを実行できます。
ドキュメントのイベントから呼ばれるマクロは、[ドキュメント プロパティ: トリガー] ページで作成できます。
シート イベント:
- シートをアクティブにした後にマクロを実行できます。
- シートを非アクティブにするときにマクロを実行できます。
シート イベントから呼ばれるマクロは、[シート プロパティ: トリガー] ページで作成できます。
シート オブジェクト イベント:
- シート オブジェクトをアクティブにした後にマクロを実行できます。
- シート オブジェクトを非アクティブにするときにマクロを実行できます。
シート オブジェクト イベントから呼ばれるマクロは、[シート プロパティ: トリガー] ページで作成できます。
ボタン イベント:
- ボタンをマクロ ボタンとして定義できます。
マクロ ボタンのイベントから呼ばれるマクロは、ボタン プロパティ:[アクション] ページから作成できます。
項目イベント:
- 指定された項目で選択が行われた時にマクロを実行できます。
- 指定され項目に論理的に関連付けられている任意の項目で選択が行われるときにマクロを実行できます。
- 指定された項目で選択がロックされるときにマクロを実行できます。
- 指定された項目で選択がアンロックされるときにマクロを実行できます。
項目イベントから呼ばれるマクロは、[ドキュメント プロパティ: トリガー] ページで作成できます。
変数イベント:
- 指定されたスクリプト変数に直接新しい値が入力されたときにマクロを実行できます。
- 他の変数またはドキュメントの論理状態が変化した結果として、指定した変数の値が変化したときに、このマクロ (存在する場合) が実行されます。
変数イベントから呼ばれるマクロは、[ドキュメント プロパティ: トリガー] ページで作成できます。
マクロ編集:
マクロは、そのトリガーの方法に関わりなく、[モジュールの編集] ダイアログで作成、編集できます。
このセクションでは、とても役立つ VBScript マクロの例をいくつか提供します。
Using VBScript Input Boxes for User Interaction
rem ** Clear selections, ask for product, **
rem ** select that product, **
rem ** go to sheet "Market", **
rem ** show pivot table "Sales" **
Sub ChooseValue
Set q = ActiveDocument
q.ClearAll (false)
Set f = q.Fields("Model Name")
x = inputbox ("Enter product")
f.Select(x)
set s = q.Sheets("Market")
s.Activate
s.SheetObjects("Sales").Activate
end sub
JScript の特別なライブラリ関数
VBScript マクロでは、標準の VBScript 関数 InputBox および MsgBox を自由に使用できますが、JScript を使用する場合は、これらに直接対応する関数がありません。このため、これらのアクションのための特別なライブラリ関数 qvlib が追加されました。次に、この関数の例を示します。
// JScript
function Test()
{
personName = qvlib.InputBox("What is you name?")
msg = "Hello " + personName + " !"
qvlib.MsgBox(msg)
}
次の例に示すように、実際には VBScript マクロでも qvlib 関数は機能しますが、この場合は、汎用の VBScript 関数である InputBox と MsgBox を使用することをお勧めします。
rem VBScript
sub TestModule
name = qvlib.InputBox("What is your name?")
msg = "Hello "
msg = msg + name + " !"
qvlib.MsgBox(msg)
end sub