Excel Script 에서 자주 쓰이는 코드
좋아요 : 0개
정민정
작성일 21/09/09 15:53

RPA CheckMATE 의 Excel Control 은 개별 엑셀 이벤트들과 엑셀 스크립트. 크게 이 두 가지로 분류됩니다.

개별적으로 나뉘어 있는 엑셀 이벤트들은 직관적으로 파악 가능하고 쉽다는 장점이 있지만,

다양한 활용을 위한다면 최후에는 Excel Script이벤트를 사용하게 됩니다.


<기본 엑셀 코드 형식> 


위의 열고, 저장하고 닫는 것 포함하여 기본적으로 자주 쓰이는 코드를 아래에 모았습니다.


1.  엑셀에서 파일 경로 지정 (열기, 저장)


(1) 기존에 존재하는 양식 

xl.ExcelFileOpen(xl.SetExcelID, @"드라이브:\경로\양식파일명.xlsx");

이미 사용하는 엑셀 양식이 있다면 열 때  경로를 설정해서 사용 가능합니다.

엑셀 스크립트에서 가장 오류나기 쉬운 부분이 파일 열 때와 저장할 때이므로, 확인을 따로 하는 것을 추천합니다.

@"C:\Users\ebsoft\Documents\새 폴더\새 폴더\엑셀.xlsx"     or  "C:\\Users\\ebsoft\\Documents\\새 폴더\\새 폴더\\엑셀.xlsx"

PrintLog ( ); 를 사용하여 스크립트상에서 어떻게 경로가 출력되는지 확인할 필요가 있습니다. (@는 특수 기호가 있어도 한 줄로 인식하기 위한 필요 조치)



(2)  항상 이름이 바뀌는 파일

엑셀_yyyyMMDD(오늘 날짜) 형식으로 매일 저장되는 파일이 있다고 가정하였을 때,  변수를 사용하여 해당 파일을 열거나 저장할 수 있습니다.

다만 위와 같이 변수를 넣게 되면  "" 로 구분되는 부분만 @로 이스케이프탈출 방지되기 때문에 마찬가지로 확인이 필요합니다.


ex) 'C:\Users\ebsoft\Documents\새 폴더\ 오늘날짜\ 파일명'   처럼 중간에 들어가게 되고 변수 뒤에서 폴더 구분을 할 때, 아래와 같이 신경써야 함. 

 @"C:\Users\ebsoft\Documents\새 폴더\ " +  toDay  + "\\엑셀필터.xlsx"        or      @"C:\Users\ebsoft\Documents\새 폴더\ " + toDay + @"\엑셀필터.xlsx" 



2. 셀 선택


(1) 하나의 셀 선택

xl.SelectCell(  까지 입력하며 다음과 같은 도움말이 뜹니다. 화살표 방향 키를 눌러서 목록 확인 가능합니다.  int 인덱스는 '1' 부터 시작됩니다. (0을 넣으면 오류발생)


Ex)


xl.SelectCell(3, 2);

xl.SelectCell("C2"); 




(2) 범위 셀 선택

Ex)

xl.SelectRange(2, 2, 6, 7);

xl.SelectRange("B2:F7");




3. 셀 값 입력하기


   (1) 클립 보드 사용

xl.SelectCell(1, 2);

xl.PasteAsClipboard(false);


 

    (2) 직접입력


xl.SetOneCellValue(1, 1, "안녕하세요");

혹은

xl.SelectCell(1, 1);

xl.SetOneCellValue("안녕하세요");




4. 기존에 존재하는 파일 아래에 내용 갱신


이미 작성되어 있는 파일 뒤를 이어서 작성하는 경우도 있을 것 입니다. 


1을 참고하여 이어 쓸 파일을 열고, ActiveSheet(시트번호); 를 사용해서 페이지를 엽니다.


해당하는 파일의 활성화 된 시트에서, 가장 마지막 행과 열의 인덱스 수를 알 수 있는 코드입니다.




3을 참고하여


<실행결과>



※ 날짜, 참가자, 이메일 을 채우고 싶을 때 아래와 같이 하면 안된다.

 

마지막 줄이란 말 그대로 가져온 파일에서 채워진 마지막 줄을 의미하기 때문이다. (셀에 테두리가 쳐 있거나 배경 색이 채워져 있는 것도 카운트 된다.) 


따라서 다음과 같이 따로 int 변수에 마지막 줄 값을 담아주면 한 줄에 채워 넣을 수 있다.



5. 셀 값 가져오기


    (1) string변수에 가져오기




exceldata라는 string변수에 A1값 가져오기

  string exceldata = xl.GetOneCellValue(1, 1);


exceldata라는 string변수에 A1:I3값 가져오기

  xl.SelectRange(1, 1, 9, 3); (셀 범위 선택)

  string exceldata = xl.GetRangeCellValue(); (범위 값 가져오기)


    (2) DataTable에 값 가져오기


//A1:C9값 데이터테이블에 가져오기

  xl.SelectRange(1, 1, 3, 9); 

  xl.CopyToClipboard(); //클립보드에 복사

  exceldataTable = xl.ClipboardToDataTable(); //클립보드에서 데이터테이블 exceldataTable로 이동 (exceldataTable는 전역변수)



이상이 많이 쓰이는 코드들입니다.


감사합니다.

  • 카테고리
    Control Manager
  • 태그