# 內部巨集解譯器

透過內建指令碼引擎，即可從 [](https://help.qlik.com/en-US/qlikview/Subsystems/Client/Content/QV_QlikView/Internal_Macro_Interpreter.htm) [](https://help.qlik.com/en-US/qlikview/Subsystems/Client/Content/QV_QlikView/Internal_Macro_Interpreter.htm)QlikView 內部的自動化存取 QlikView 物件。

## 叫用巨集

[](https://help.qlik.com/en-US/qlikview/Subsystems/Client/Content/QV_QlikView/Internal_Macro_Interpreter.htm)在 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)` `}`

如下列範例所示，qvlib 函數也可以在 VBScript 巨集中運作，但在這種情況下，您也可以使用一般的 VBScript 函數 InputBox 與 MsgBox。

`rem VBScript` `sub TestModule` `name = qvlib.InputBox("What is your name?")` `msg = "Hello "` `msg = msg + name + " !"` `qvlib.MsgBox(msg)` `end sub`

## 瞭解更多資訊

* [文件屬性：觸發程序](https://help.qlik.com/zh-TW/qlikview/September2025/Subsystems/Client/Content/QV_QlikView/Document_Properties_Triggers.htm)
* [工作表屬性：觸發程序](https://help.qlik.com/zh-TW/qlikview/September2025/Subsystems/Client/Content/QV_QlikView/Sheet_Properties_Triggers.htm)
* [動作](https://help.qlik.com/zh-TW/qlikview/September2025/Subsystems/Client/Content/QV_QlikView/Actions.htm)
* [指令碼變數](https://help.qlik.com/zh-TW/qlikview/September2025/Subsystems/Client/Content/QV_QlikView/Scripting/ScriptVariables.htm)