매크로 작성 중에 궁금한 점이 생겨 질문 한번 드려봅니다.
한글(HWP)에서 문서에 숫자를 입력한 후 숫자의 범위를 선택하면 선택한 숫자 범위를 변수(입력값)로 받고
매크로를 실행하면 선택범위의 숫자를 한글금액으로 표현하고 싶은데… 막막하네요
EX) 입력값 : 2350000 = > 출력값 : 금2,350,000원정(금이백삼십오만원정)
코드는 대략 아래 처럼 구성했습니다. 선택한 범위의 숫자를 변수로 받는 방법이 있을까요??
InitScan하면 될 거 같았는데… "hwpCtrl이 정이 되지 않았습니다"라고 나오고 ㅡㅡ;; 지식이 짧아 어렵네요…
별건 아니여도 한글 작업은 많은데… 번번히 엑셀로 변환해서 다시 한글로 복사해 오기도 귀찮아서 만들어 봤는데…어렵네요…
고수님들의 조언 부탁드립니다.
===============================================================================================
function OnScriptMacro_숫자를한글로(){
var num = ""; // 선택 범위 숫자 값 받을 변수
var num2 = ""; // 선택 범위 숫자 값을 문자로 변환 후 천단위 콤마 변환용
var x = new Array("","일","이","삼","사","오","육","칠","팔","구","십");
var y = new Array("","십","백","천","","십","백","천","","십","백","천","","십","백","천");
var han = "";
var str = "";
var result = "";
//선택 범위에서 텍스트 받기
HwpCtrl.InitScan(0, 0x00ff);
num = HwpCtrl.GetText();
HwpCtrl.ReleaseScan();
//한글로 표현
for(i=0; i<num.length; i++) {
str = "";
han = x[num.charAt(num.length-(i+1))];
if(han != "") str += han+y[i];
if(i == 4) str += "만";
if(i == 8) str += "억";
if(i == 12) str += "조";
if(i == 16) str += "경";
result = str + result;
}
//결과 변환
if(num != 0) num2 = num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
if(num != 0) result = "금"+num2 +"원정" + "(금" + result + "원정)";
//팝업 창
XHwpMessageBox.String=result;
XHwpMessageBox.DoModal();
//변환 값을 한글에 입력
HAction.GetDefault("InsertText", HParameterSet.HInsertText.HSet);
HParameterSet.HInsertText.Text = result;
HAction.Execute("InsertText", HParameterSet.HInsertText.HSet);
}