내부 매크로 해석기
QlikView 내부에서 내장 스크립팅 엔진을 사용한 자동화를 통해 QlikView 개체에 액세스할 수 있습니다.
매크로 호출
VBScript 또는 JScript로 작성된 매크로는 QlikView 문서 안에서 여러 다른 방법으로 호출할 수 있습니다.
문서 이벤트:
- 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