RPA/Power Automate Desktop

[Power Automate Desktop] 엑셀 주소록 읽어 파워포인트로 명찰 만들기

꼰대 2021. 6. 23. 21:39

엑셀에 있는 주소록 데이터를 읽어 명찰 폼이 있는 파워포인트 슬라이드를 추가하면서 넣는 플로어를 만들어보겠습니다.

python으로 구현한 내용은 아래 링크에서 확인하세요.

https://ggondae.tistory.com/48

 

[openpyxl, python-pptx] 엑셀 주소록 읽어 파워포인트로 명찰 만들기

회사 주최 세미나가 열린다. 참석자는 20명이며 리스트는 엑셀 데이터로 가지고 있다. 참석자 명찰을 파워포인트로 만들어 출력해야한다. 1. 참석자 엑셀 데이터 만들기 전산팀에 요청하여 온라

ggondae.tistory.com

 

시작하기 전에 몇가지 제한사항이 있습니다. PAD가 엑셀처럼 파워포인트로 미리 작성한 빌드가 없습니다. 따라서 파일을 열고 닫는데 어려움이 있습니다. 그리고 파워포인트의 텍스트 상자를 구별해 낼 방법이 없습니다. 각 슬라이드마다 UI 요소 값이 다르기 때문에 슬라이드마다 UI 요소를 추가할 수도 없는 일입니다. 그래서 어쩔 수 없이 맘에 들지는 않지만 파워포인트를 최대창으로 키운 다음 마우스 커서 좌표를 이용했습니다. 이거 말고는 다른 방법이 생각나지 않습니다.

그러다보니 PAD를 사용하는 PC가 변경되거나 파워포인트의 기본 화면에 변화가 생긴다면 마우스 커서 좌표값을 수정해야 할 필요성이 있습니다.

 

명찰을 만들기 위해 필요한 2개의 파일을 준비합니다. 하나는 이름과 회사명이 저장된 엑셀파일이고 또 하나는 명찰 폼이 미리 저장된 파워포인트 파일입니다. 엑셀 파일을 읽어 파워포인트의 슬라이드를 추가하며 입력할 예정입니다.

 

먼저 전체 플로어는 아래와 같습니다.

 

반복문 안에서 텍스트 상자에 글자는 넣는 부분은 하위 흐름을 통해 처리하고 있습니다.

 

좌측 메뉴 Excel > Excel 시작을 끌어와 엑셀 파일 경로를 입력하고 저장합니다.

 

엑셀 데이터를 가져올 범위를 지정하기 위해 좌측 메뉴 Excel > Excel 워크시트에서 첫 번째 빈 열/행 가져오기를 끌어와 저장합니다.

 

이제 주소록 데이터를 읽어야 합니다. 좌측 메뉴 Excel > Excel 워크시트에서 읽기를 끌어와 셀 범위 값으로 설정 후 시작 행은 2열부터 시작하여 타이틀을 제외하고 마지막 열과 행은 위에서 구한 값을 이용하여 저장합니다.

이렇게 하면 엑셀에 있는 주소록 데이터를 변수에 저장하는 작업이 완료됩니다.

 

이제 파워포인트를 실행해야합니다. 좌측 메뉴 시스템 > 응용 프로그램 실행을 끌어와 오피스 실행파일이 폴더에서 파워포인트를 선택하고 명령줄 인수에는 실행할 파일 이름을 입력합니다. 또한 창은 최대화를 하고 최대 3초 프로그램이 로드될 때까지 대기합니다.

 

다음으로 파워포인트의 첫 번째 슬라이드가 명찰 기본 템플릿이기 때문에 해당 슬라이드를 클립보드에 저장시켜 두어야 합니다. 좌측 메뉴 마우스 및 키보드 > 마우스 클릭 보내기를 끌어와 이벤트는 왼쪽 클릭, 클릭 전 대기 시간은 1초로 설정합니다. (아직 저장을 누르면 안됩니다.)

 

다음으로 마우스 커서가 이동할 좌표값을 입력해야 합니다. 먼저 명찰 폼이 있는 파워포인트를 실행하고 창 크기 최대화를 합니다. 그리고 좌측 슬라이드 탭에 있는 첫 번째 슬라이드에 마우스 커서를 가져간 다음 Ctrl + Shift키를 누릅니다.

그렇게 하면 위 화면처럼 X, Y 값에 자동으로 좌표값이 입력되고 저장을 하면 됩니다.

 

다음으로 해당 슬라이드를 클립보드에 복사해야 합니다. 좌측 메뉴 마우스 및 키보드 > 키 보내기를 끌어와 수정자 삽입을 클릭하여 Control를 선택합니다. 다음으로 끝의 ( )안에 {C}를 입력하고 저장합니다.

이렇게 되면 텍스트 상자에 텍스트 입력 후 Ctrl + V를 누르게 되면 좌측 슬라이드 탭에 복사된 슬라이드가 생성됩니다.

 

이제 반복문을 통해 엑셀 데이터를 불러와 파워포인트에 쓰는 작업을 해야합니다. 우선 슬라이드 복사 시 마지막 여부를 판단하기 위해 변수를 하나 생성해야 합니다. 좌측 메뉴 변수 > 변수 설정을 끌어와 시작번호는 1로 변수를 저장합니다.

 

다음 좌측 메뉴 반복 > 각각의 경우를 끌어와 위에서 저장한 엑셀 데이터 변수를 반복할 값으로 선택하여 저장합니다.

 

다음은 엑셀에서 가져온 회사명과 이름을 파워포인트에 써야하는 작업을 해야합니다. 그런데 플로어에 이 내용을 추가하면 반복문이 길어져 가독성이 떨어져 회사명 넣는 플로어와 이름을 넣는 플로어를 하위 흐름으로 별도 만들어 반복문안에 넣겠습니다.

상단 하위 흐름을 선택하고 하단 +버튼을 클릭합니다.

 

하위 흐름 이름을 입력하고 저장합니다.

 

그렇게 되면 상단 탭에 하위 흐름이 생기고 여기서 반복문 안에서 처리할 작업 플로어를 생성합니다.

좌측 메뉴 마우스 및 키보드 > 마우스 클릭 보내기를 끌어와 마우스 이벤트는 왼쪽 클릭, 마우스 이동을 활성화하고 파워포인트 화면으로 전환합니다. (저장 누르면 안됩니다.)

 

마우스 커서를 회사이름에 가져가 왼쪽 버튼을 클릭하고 그 상태에서 Ctrl + Shift를 누릅니다. (커서 움직이면 안됩니다.)

 

그리고 다시 마우스 클릭 보내기 창으로 돌아오면 X, Y 좌표값이 입력되어 있고 저장합니다.

다음으로 좌측 메뉴 마우스 및 키보드 > 키 보내기를 끌어와 수정자 삽입을 클릭하고 ControlKey를 선택합니다. 다음 ( )안에 {A}를 입력하고 저장합니다.

이 뜻은 텍스트 상자를 왼쪽 마우스로 클릭 후 전체 선택을 하는 내용입니다.

 

좌측 메뉴 마우스 및 키보드 > 키 보내기를 끌어와 특수키 삽입 > 기타에서 Delete를 선택합니다. 텍스트 상자 내 텍스트를 삭제하는 내용입니다.

 

다음으로 회사명을 입력해야 합니다. 좌측 메뉴 마우스 및 키보드 > 키 보내기를 가져와 보낼 텍스트에 엑셀에서 읽은 데이터 중 회사명에 해당하는 2번째 열 값을 입력해줍니다.

 

이제 메인 플로어로 돌아와 반복문 안에 좌측 메뉴 흐름 제어 > 하위 흐름 실행을 끌어와 위에서 생성한 하위 흐름 변수를 선택하고 저장합니다.

 

회사명 등록 방법과 마찬가지로 이름 등록도 동일하게 하위 흐름으로 등록하여 등록합니다.

 

 

다음으로 좌측 메뉴 조건 > 만약을 끌어와 위에서 등록한 변수와 엑셀에서 읽은 변수의 총 행수를 비교하는 내용을 입력 후 저장합니다.

이 내용은 텍스트 박스에 글 입력 후 다음 슬라이드를 붙여넣기 해야하는데 마지막 슬라이드 처리 후 슬라이드 복사를 그만하기 위한 조건문입니다.

 

다음으로 위에서 정의한 조건문 안에 슬라이드 복사 작업을 넣어야 합니다. 좌측 메뉴 마우스 및 키보드 > 키 보내기에서 수정자 삽입을 클릭하고 Control을 선택한 다음 마지막에 ({V})를 추가합니다.

이 구문은 붙여넣기 구문으로 클립보드에 있는 슬라이드를 붙여넣기 하는 작업입니다.

 

다음으로 좌측 메뉴 변수 > 변수 증가를 끌어와 위에서 정의한 index 변수를 1 증가시킵니다.

 

모든 작업이 끝났습니다. 이제 엑셀과 파워포인트를 종료해야합니다. 먼저 엑셀을 종료합니다. 좌측 메뉴 Excel > Excel 닫기를 끌어와 종료합니다. 파일 변동 사항이 없기 때문에 저장없이 바로 종료합니다.

 

다음으로 파워포인트를 저장해야합니다. 파워포인트 저장은 좌측 상단 저장 아이콘을 클릭하여 저장하겠습니다. 이 또한 마찬가지로 마우스 커서 좌표를 통해 해당 아이콘을 클릭하는 방법으로 좌측 메뉴 마우스 및 키보드 > 마우스 클릭 보내기를 끌어와 파워포인트 화면의 좌측 상단 저장 아이콘의 좌표값을 Ctrl + Shift키로 가져와 저장합니다.

 

파워포인트 종료도 동일한 방법으로 우측 상단 X를 클릭하여 종료 처리해줍니다.

 

우측 상단 X표 종료 대신 시스템 좌측 메뉴 시스템 > 프로세스 종료에서 응용 프로그램 실행 시 정의된 프로세스 이름 변수를 입력하면 파워포인트를 종료할 수 있습니다.

 

그런데 이와 같은 방법을 사용할 경우 파워포인트에서 비정상 종료로 판단하여 추천하지는 않습니다.

 

 

이제 저장하고 상단 실행을 누르면 파워포인트 파일이 정상적으로 작성됨을 확인할 수 있습니다.

 

이름 사이에 스페이스를 넣고 싶었는데 PAD에는 적용할 수 있는 빌드가 없습니다.

반응형