내부 매크로 해석기

QlikView 내부에서 내장 스크립팅 엔진을 사용한 자동화를 통해 QlikView 개체에 액세스할 수 있습니다.

매크로 호출

VBScript 또는 JScript로 작성된 매크로는 QlikView 문서 안에서 여러 다른 방법으로 호출할 수 있습니다.

문서 이벤트:

  • QlikView 문서를 연 후 매크로가 실행될 수 있습니다.
  • 스크립트 재실행 후 매크로가 실행될 수 있습니다.
  • 용량 축소 명령 후 매크로가 실행될 수 있습니다.
  • 문서에서 필드가 선택된 후 매크로가 실행될 수 있습니다.
  • 문서에서 변수 값이 변경되면 매크로가 실행될 수 있습니다.

문서 이벤트에서 호출되는 매크로는 문서 속성: 트리거 페이지에서 만듭니다.

시트 이벤트:

  • 시트가 활성화된 후 매크로가 실행될 수 있습니다.
  • 시트가 비활성화되면 매크로가 실행될 수 있습니다.

시트 이벤트에서 호출되는 매크로는 시트 속성: 트리거 페이지에서 만듭니다.

시트 개체 이벤트:

  • 시트 개체가 활성화된 후 매크로가 실행될 수 있습니다.
  • 시트 개체가 비활성화되면 매크로가 실행될 수 있습니다.

시트 개체 이벤트에서 호출되는 매크로는 시트 속성: 트리거 페이지에서 만듭니다.

버튼 이벤트:

  • 버튼을 매크로 버튼으로 정의할 수 있습니다.

매크로 버튼 이벤트에서 호출되는 매크로는 버튼의 동작 페이지에서 만듭니다.

필드 이벤트:

  • 지정된 필드에서 선택을 수행할 때 매크로가 실행될 수 있습니다.
  • 지정된 필드와 논리적으로 연결된 필드에서 선택이 수행되면 매크로가 실행될 수 있습니다.
  • 특정 필드에서 선택 내용이 잠기면 매크로가 실행될 수 있습니다.
  • 특정 필드에서 선택 내용의 잠금이 해제되면 매크로가 실행될 수 있습니다.

필드 이벤트에서 호출되는 매크로는 문서 속성: 트리거 페이지에서 만듭니다.

변수 이벤트:

  • 지정된 스크립트 변수에 직접 새 값을 입력할 때 매크로가 실행될 수 있습니다.
  • 문서의 논리적 상태 또는 다른 변수가 변경됨에 따라 지정된 변수의 값이 변경되면 매크로가 실행될 수 있습니다.

변수 이벤트에서 호출되는 매크로는 문서 속성: 트리거 페이지에서 만듭니다.

매크로 편집기:

매크로는 트리거되는 방법과는 관계없이 모듈 편집 대화 상자에서 만들고 편집합니다.

Examples:  

이 섹션에서는 매우 유용한 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 함수인 InputBoxMsgBox를 자유롭게 사용할 수 있지만 JScript를 사용할 경우에는 이에 해당하는 함수가 없습니다. 이러한 문제를 해결하기 위해 qvlib라는 특수 라이브러리가 추가되었습니다. 아래 예에서 함수를 사용하는 방법을 볼 수 있습니다.

// JScript

function Test()

{

personName = qvlib.InputBox("What is you name?")

msg = "Hello " + personName + " !"

qvlib.MsgBox(msg)

}

아래 예에 나오는 것처럼 qvlib 함수는 VBScript 매크로에서도 작동하지만 이 경우에는 일반 VBScript 함수인 InputBoxMsgBox를 사용해도 됩니다.

rem VBScript

sub TestModule

name = qvlib.InputBox("What is your name?")

msg = "Hello "

msg = msg + name + " !"

qvlib.MsgBox(msg)

end sub