Excel Script 이벤트 내에서의 엑셀 함수 사용
좋아요 : 0개
정민정
작성일 21/09/08 14:30


안녕하세요.

엑셀로 된 결과 파일을 받을 때, RPA컨트롤 매니저 내의 코딩이 아닌 엑셀 함수를 통해서도 출력할 값을 판단하거나 입력 할 수 있습니다. 

 

엑셀함수에서 자주 쓰이는 Vlookup 함수를 예로 들겠습니다.

이렇게 총금액은 수량*가격으로 구하고, 아래와 같이 이렇게 물품에 대한 가격이 이미 표로 만들어져 있을 경우

 

C3의 가격 은 다음과 같이 VLOOKUP함수로 가져올 수 있습니다.



이 수식을 RPA에서  Excel Script 이벤트를 사용하여 자동으로 입력하는 방법입니다.


1.Event Componenents 탭에서 Excel Control의 Excel Script아이콘을 끌어옵니다.

Main Context 항목에 다음 코드를 참고하여 Script를 작성 합니다.


//Alias로 사용 가능한 엑셀 ID를 지정합니다. 

 xl.SetExcelID = "1";


//엑셀을 실행합니다. false인 경우, 엑셀실행 없이 구동 가능합니다.

 xl.ExcelAppExecute(xl.SetExcelID, true);

//엑셀 파일을 open. @를 붙이면 이스케이프 방지하여 전체위치를 지정 가능합니다. 이 경우 (vlookup 함수 사용) , 참조할 표가 작성되어있는 엑셀 템플릿을 열어주면됩니다. ( ex: [vlookup_tmp.xlsx]) 

>@"파일 이름까지의 경로"  

xl.SetWorkbookID = xl.ExcelFileOpen(xl.SetExcelID, @"C:\Users\Desktop\work\vlookup_tmp.xlsx");

//작성할 sheet를 활성화 합니다.

 xl.ActiveSheet(1);

//추후 날짜별 파일을 생성하기 위해 [toDay] 변수를 String 형태로 선언 합니다.

string toDay = DateTime.Now.ToString("yyyyMMdd");

//작성할 sheet를 활성화 합니다.

xl.ActiveSheet(1);

//(1) C2 한 셀에만 입력할 경우   ( @안 쓸경우 \를 사용하여 " $ ( & 등의 특수기호가 출력하기 위함임을 밝혀야 함 )

xl.SetOneCellVlaue( 3 , 2 , @"=VLOOKUP(A2,$G$3:$H$7,2,TRUE)" );


//(2) 반복문을 사용하여 C2 부터 C5 까지 쭉 입력할경우 

for ( int i  =  0 ; i <  4 ; i++ )

{

    xl.SetOneCellVlaue( 3 ,  i+2  , @"=VLOOKUP(A" + (i + 2) + @",$G$3:$H$7,2,TRUE)" );

}

//백업 형태로 작성된 엑셀 파일을 다른이름으로 저장합니다 " + toDay +" -> 오늘 날짜를 가져오는 변수를 이용하여 저장합니다.

// > 바탕화면의 work폴더에 과일구매_당일날짜(yyyyMMDD)로 저장됨

xl.ExcelFileSave(xl.SetExcelID, 1, @"C:\Users\Desktop\work\과일구매_" + toDay +".xlsx");


위와 같이 참고하여 코딩하시면 표를 참조하는 vlookup함수가 엑셀에 입력되며,  다른 함수도 적용가능합니다 (연산함수, 하이퍼링크, Sum등) 


감사합니다.



※표가 미리 작성된 (템플릿) 파일 은 보통 엑셀과 똑같은 조건으로 구성되기 때문에 필요한 조치를 취해두셔야 올바른 값을 얻을 수 있습니다.   

(ex: vlookup함수 사용을 위해 표를 오름 또는 내림차수로 정렬)

  • 카테고리
    Control Manager
  • 태그