RPA/Power Automate Desktop

[Power Automate Desktop] 엑셀 자동 생성 및 파일 저장

꼰대 2021. 6. 14. 18:39

처음 간단한 예제에서는 모든 항목을 UI 요소 처리해서 클릭 이벤트 위주로 하였지만 실제 그렇게 쓰기는 어렵습니다. 이제는 뭔가 세련된 기능들을 좀 이용하겠습니다.

이번 RPA 목표는 엑셀 파일을 생성해서 총 10명 학생의 국어, 영어, 수학 점수를 100점 만점 기준으로 무작위 입력한 다음 평균(소수점 1자리 반올림)을 구하고 파일 저장 후 프로그램 종료하는 내용입니다.

먼저 만들어봤는데 완성되면 아래와 같습니다.

 

그리고 전체 플로어는 아래와 같습니다.

 

보기에만 복잡할뿐 로직은 별로 어렵지 않습니다.

1. 엑셀 파일 생성 및 sheet 활성화
2. 1번 행(row)에 타이틀 값 입력
3. 필요한 변수 설정
4. 2번 행(row)부터
5. 1번 열(column)부터 5번 열까지 한 셀 씩
6. A2셀에는 번호, B2셀에는 무작위 국어 점수, B3셀에는 무작위 영어 점수 ~ E1셀에는 앞에 3개 값 평균 입력
7. 이렇게 10번을 반복한 후
8. 파일 저장
9. 프로그램 종료

 

시작하기 전에 개발언어를 모르시는 분을 위해 잠깐 집고 넘어가야 할 부분이 있습니다.

바로 변수라는 개념입니다.

변수(Variable)란 쉽게 말하면 데이터 저장공간이라고 생각하면 됩니다.

a = 100

이 문장은 변수 a에 100이란 값을 넣겠다라는 뜻이며 a를 출력하면 100이란 값이 나옵니다.

쉬운 개념입니다.

그럼 이제 하나씩 해보겠습니다.

 

+새 흐름 선택해서 적당한 이름으로 생성합니다.

다음 좌측 화면의 Excel > Excel 시작을 끌어와 배치합니다. 화면을 보면 변수 생성됨에 ExcelInstance라는 이름이 정의된 것을 볼 수 있습니다. 이는 새로 생성한 엑셀문서가 해당 변수의 이름으로 저장된다라는 뜻으로 다른 작업을 할 경우 이 변수명을 지정해줘야 합니다. 변수명을 클릭해서 변경도 가능하며 우측 흐름 변수에도 표시되는 것을 확인할 수 있습니다.

저장을 클릭합니다.

 

다음은 해당 문서 중 활성화할 워크시트를 지정해줍니다. 즉 데이터를 입력할 워크시트를 지정합니다. 보통 새로운 파일을 생성하면 워크시트는 하나만 생성되서 별 의미는 없으나 기존 파일을 수정하는 등 워크시트가 2개 이상일 경우는 해당 작업을 해줘야 합니다. 워크시트 지정은 이름이나 색인으로 가능하며 색인의 경우 좌측부터 1번으로 시작됩니다.

좌측 메뉴 중 활성 Excel 워크시트 설정을 끌어와 배치하고 다음 워크시트 활성화는 색인으로, 워크시트 색인은 1번으로 입력하고 저장합니다.

참고로 이 화면에서 Excel 인스턴스라는 항목이 있는데 위에서 설명한 문서의 변수입니다. 변수는 앞뒤로 %를 넣어야 변수로 인식합니다.

 

다음은 문서의 타이틀 (번호, 국어, 영어, 수학, 평균)을 입력하겠습니다. 이 값들은 한번만 입력하는 static 값이라서 바로 셀에 값 지정해서 넣겠습니다.

좌측 메뉴에서 Excel 워크시트에 쓰기를 선택에 끌어와 배치하고 쓸 값은 번호, 열은 A, 행은 1로 입력 후 저장을 클릭합니다. 열은 엑셀에 표기되는 A, B, C로 입력해도 되고 번호를 입력해도 됩니다. 즉 A==1, B==2 이렇게 생각하면 됩니다.

 

나머지 값도 동일하게 차례로 배치하여 입력해줍니다.

 

여기까지 상단 실행 버튼을 눌러 테스트를 해보면 아래와 같이 출력됩니다.

 

이제 실제 데이터가 들어가는 부분을 처리하겠습니다. 실제 데이터 부분은 행(row)을 기준으로 반복구문 안에서 이루어져 총 10번의 반복이 일어납니다. 그 다음으로 열(column)을 기준으로 4번의 반복이 일어납니다.

이를 위해 우선 변수 3개를 선언하겠습니다.

좌측 메뉴 중 변수 > 변수설정을 가져와 배치하고 변수 이름은 maxRow, 값은 10으로 입력합니다. 이는 총 10번의 행(row)만큼 반복을 위해 선언하는 변수입니다. 설정의 값을 클릭하면 변경할 수 있는 필드로 바뀌는데 %를 제외한 가운데 문자 부분을 maxRow로 변경해주고 종료값에는 10을 입력하고 저장합니다.

 

다음으로 row와 index 변수를 선언합니다. row는 현재 작업중인 row의 번호를 저장할 변수이고 index는 번호 열 값에 들어갈 변수입니다.

위와 동일하게 변수를 만들고 row의 종료값(초기값)은 2로 저장합니다. 이는 1행은 타이틀이고 실제 데이터는 2행부터 들어가기 때문에 2를 입력합니다.

또한 index의 번호는 1번부터 시작하기 때문에 종료값(초기값)을 1로 입력하여 저장합니다.

 

다음으로 좌측 메뉴 Excel > Excel 워크시트에서 첫 번째 빈 열/행 가져오기를 끌어와 배치한 후 저장을 클릭합니다. 이는 열(column) 계산 시 마지막 열의 값을 구하기 위한 변수(FirstFreeColumn - 1)입니다. (첫 번째 나오는 빈열 - 1 = 평균값이 들어가는 열)

 

이제 각 열과 행을 돌며 값을 넣는 반복문을 구현하겠습니다.

첫번째는 아래와 같이 행(row)을 기준으로 하나하나 움직입니다.

 

이를 구현하는 요소는 아래와 같습니다.

좌측 반복 > 반복 조건을 끌어와 배치하고 첫번째 피연산자는 row, 연산자는 작거나 같음 (<=), 두 번재 피연산자는 maxRow+1를 지정하고 저장합니다.

위에서 row에는 초기값으로 2를 넣었습니다. 그리고 maxRow는 10을 넣었습니다. 즉, 타이틀을 제외한 행(row)가 시작되는 2부터 11까지 한줄씩 집어 넣겠다라는 뜻이 되겠습니다.

이를 for문으로 구현해보면

Java:
for (int row = 2 ; row <= maxRow+1 ; row++)

python:
for row in range(2, 12):

이렇게 될 수 있겠네요.

두 번째 피연산자 값의 경우 우측 {x}를 클릭하여 maxRow를 선택한 다음 % 앞에 +1을 입력하면 됩니다.

 

이제 한 행(row)씩 반복 처리하는 부분은 구현이 되었고 다음은 열(column)이 반복되어여야 합니다.

우선 좌측 변수 > 변수 설정을 끌어와 반복 조건 안쪽에 배치하고 col, sum 변수를 정의합니다. col 변수는 번호 열부터 평균 열까지 반복 되는 값이 저장될 변수이고 sum 변수는 국어, 영어, 수학 점수를 모두 합한 값을 넣을 변수입니다.

열은 1번부터 시작되므로 col의 초기값은 1이며 세 과목의 합에 대한 변수 sum의 초기값은 0입니다.

행(row)의 반복 조건문 안에 열(column)에 들어가는 변수를 정의한 이유는 하나의 행이 끝나고 다음 행에 들어가면 해당 열의 변수값은 모두 초기화 되어야 하기 때문에 행 반복문 안에서 열에 대한 변수가 정의되어야 합니다.

 

다음으로 열(column)에 대한 반복문을 작성합니다.

좌측 반복 > 반복 조건을 끌어와 sum 변수설정 값 하단에 위치합니다. 그리고 첫 번째 피연산자에 col변수, 연산자는 작거나 같음, 두 번째 연산자는 마지막 빈 열 (FirstFreeColumn) - 1 값을 입력하고 저장합니다.

 

이제 첫번째 행에 대한 각 열 값을 입력해야하는 구문을 넣어야 합니다.

첫번째 열은 번호입니다. 열 번호가 1번일 경우 위에서 정의했던 index 변수값을 넣고 1 증가시킵니다. 그래야 다음 행 때 2 값이 출력될 것입니다.

좌측 조건 > 만약을 끌어와 배치하고 첫 번째 피연산자는 col, 연산자는 같음, 두 번째 연산자는 1을 넣습니다. 즉, 첫번째 열일 경우를 뜻합니다.

 

번호 부분이므로 1번 열(column)에 index값을 넣겠습니다. 좌측 Excel > Excel 워크시트에 쓰기를 끌어와 만약 col = 1의 조건문 사이에 배치하고 아래 변수값으로 설정한 후 저장합니다.

 

다음으로 해당 구문은 다음 행(row)때 다시 돌아오므로 index값을 +1 증가시킵니다.

방금 추가한 번호 입력 구문 하단에 변수 > 변수 증가를 끌어와 배치하고 변수이름 index와 증가값은 1을 입력하고 저장합니다.

 

다음은 나머지 값을 넣겠습니다. 좌측 조건 > 그 밖의 경우를 끌어와 index 변수 증가 하단에 배치합니다.

 

이제 각 과목의 점수를 랜덤 값으로 입력하기 위해 좌측 변수 > 임의의 숫자 생성을 끌어와 그박의 경우 {} End 끝 사이에 위치 시킵니다.

그리고 최소값은 0, 최대값은 100 (각 과목별 0점도 있고100점도 있기에...)을 설정하고 저장합니다.

 

이제 나머지 열(column)에 해당 값을 넣겠습니다. 좌측 Excel > Excel 워크시트에 쓰기를 끌어와 임의의 숫자 생성 하단에 위치하고 아래와 같이 변수를 정의하고 저장합니다.

 

이제 잠시 잊고 있었던 마지막 열(column)에 있던 평균값을 신경써야 합니다. 일단 평균값을 구하기 위해서 세 과목의 합을 구해 변수에 저장해줘야 합니다.

위에서 정의한 sum 변수에 과목별 점수를 모두 더해줍니다. 우측 변수 > 변수 증가를 끌어와 워크시트에 쓰기 하단에 위치하고 sum 변수에 위 셀에 넣은 RandomNumber값을 증가시켜줍니다.

 

이제 평균값 처리입니다.

열(column)처리 조건문 중 처음에는 번호셀에 대해 처리하고 그 다음으로 평균값 셀에 대해 처리하면 됩니다.

else if에 해당하는 좌측 조건 > 그렇지 않다면을 끌어 그 밖의 경우 위에 배치하고 아래 변수와 같이 입력합니다. 이 뜻은 돌아오는 열 값이 마지막 빈 열 - 1, 즉 평균값 열일 경우 해당 조건문으로 들어오게 됩니다.

 

세 과목을 모두 합한 sum 변수를 3으로 나눠 반올림하여 소수점 한자리로 표시하겠습니다. 좌측 변수 > 숫자 자르기를 그렇지 않다면 사이에 끌어와 아래와 같이 입력하고 저장합니다.

 

이제 평균을 구한 변수값을 평균값 셀에 입력하겠습니다. 좌측 Excel > Excel 워크시트에 쓰기를 숫자 자르기 하단에 위치 시키고 아래와 같이 입력하고 저장합니다.

 

다음으로 하나의 열 처리가 끝날 때마다 col 값을 하나씩 늘려서 다음 col로 가는 col 변수를 1 증가시킵니다.

좌측 변수 > 변수 증가을 끌어와 아래 그림처럼 만약 col = 1인 경우 마지막 구문에 위치하고 아래와 같이 입력합니다.

 

이렇게 하면 하나의 행(row)에 대한 처리가 끝났습니다.

이제 다음 행(row)로 가도록 변수 > 변수 증가를 끌어와 row 반복문 끝에 추가하고 아래와 같이 입력하여 저장합니다.

 

이제 값에 대한 처리가 끝났습니다. 테스트를 해보면 원하는데로 잘 나옵니다.

 

이제 파일을 저장하고 엑셀을 종료하겠습니다. Excel > Excel 닫기를 끌어와 최 하단에 배치하고 파일명 및 경로를 지정하고 저장합니다.

 

하나하나 설명하다보니 어려워졌습니다.

처음 보여드렸던 전체 플로어 보고 해보시는게 더 도움이 되겠다는 생각이 드네요.

약간 개발 언어의 요소가 들어가긴 했지만 비교적 간편하게 구현할 수 있습니다.

반응형