xython (win32com + python)

xython- 어떤 것이며, 어느 부분에 좋은가

작성자
sjpark
작성일
2024-08-21 21:59
조회
705
xython이란 무엇인가

만든 이유
  • 엑셀의 VBA는 사용하기 어려워 Python을 이용하여 쉽게 엑셀의 기능을 사용하도록 만들고 싶었다
  • 이런 파이썬의 새로운 모듈을 만들어서 여러사람들이 쉽게 만들 수 있도록 하고 싶었다
  • 또한 엑셀의 메뉴바를 만들어 기능을 쉽게 만들고 싶었다
  • 누군가 만들어 놓은 좋은 코드를 쉽게 공유가 가능하도록 하고싶었다
  • 공유는 버튼을 누르면 자동으로 실행되도록 하고싶었다(아직…)
  • 자신만이 사용하고 싶은 코드는 따로 사용이 가능하도록 하고싶었다
  • 다른나라의 언어로 편하게 사용가능하도록 변경 예정
word-image-1263-1.png

배경 (왜 이것이 필요한 것인가?)

코딩은 쉽지 않고, 매크로는 배우기 어려운데, 업무들은 점점 더 복잡하고 다양한 형태로 나타나서, 우리 그룹을 포함하여, 많은 곳에서 이런 디지털 자료의 변화에 대한 빠른 대응 과 자료의 활용성을 높여야 한다는 목표를 갖고, 코딩의 중요성을 강조하고 있으나, 개인의 DT실력을 중급이상까지 올리기까지는 생각보다 더디게 진행이 되고 있다.

그래서, 회사차원에서 하고 있는 RPA가 각 개인의 업무에 적용하는 데는 한계가 있어,
  • 각 개인의 사무업무에 도움이 되며
  • 다양한 요구에 만족하고
  • 확장성이 넓은
  • 쉽게 배울 수 있어야 한다는
무엇인가가 필요하다라고 생각을 하게 되었으며, 이것이 바로 기존의 방식과 다른 형태의 함수형 프로그램으로 쉽게 사용이 가능한 xython이라 불리는 패키지를 만들게 된 동기인 것이다.

xython이란
xython은 xython을 통한 코딩능력 향상 및 DT 스킬 Up으로 하는 것이며, Python을 기반으로 만든 RDA 자동화 솔루션입니다 (RDA : Robotic Desktop Automation, 개인업무 자동화)
업무능력 향상을 통한 개인별 사무 업무 자동화 및 자료변경 서비스가 기본적인 목표입니다
– RDA기반 마련하며
– 개별자료의 고급화로 협업자료 가능성 Up
– 보안성 강화를 통한 개별업무 자동화 스킬 Up

왜 xython이 필요한 것인가?
코딩은 쉽지 않고, 매크로는 배우기 어려운데, 업무들은 점점 더 복잡하고 다양한 형태로 나타나서, 우리 들의 업무를 포함하여, 많은 곳에서 이런 디지털 자료의 변화에 대한 빠른 대응 과 자료의 활용성을 높여야 한다는 목표를 갖고, 코딩의 중요성을 강조하고 있으나, 개인의 DT실력을 중급이상까지 올리기까지는 생각보다 더디게 진행이 되고 있다.

그래서, 회사차원에서 하고 있는 RPA가 각 개인의 업무에 적용하는 데는 한계가 있어,
– 각 개인의 사무업무에 도움이 되며
– 다양한 요구에 만족하고
– 확장성이 넓은
– 쉽게 배울 수 있어야 한다는

무엇인가가 필요하다라고 생각을 하게 되었으며, 이것이 바로 기존의 방식과 다른 형태의 함수형 프로그램으로 쉽게 사용이 가능한 xython이라 불리는 패키지를 만들게 된 동기인 것이다.

이 패키지의 큰 특징은 아래와 같다
– 업무에 요구되는 코딩들을 함수처럼 사용하게 만들었고,
– 사용하기 쉬워야 하고
– 확장가능성도 있으며
– 코딩에 대하여 아무것도 몰라도, 클릭만으로 필수적인 부분들을 다룰 수 있고
– 다양한 예제를 갖고 와서 직접 업무에 사용이 가능하고
– 한글로 설명이 풍부하게 되어있으며
– 다른 분야에 적용도 가능하도록

이렇게 만들어진 xython은 모듈화 방식(함수형 프로그래밍)으로 많이 사용하는 업무를 기준으로 엑셀의 함수를 그냥 불러 다가 사용하듯이, 자주 사용하는 업무를 기준으로 함수형태로 만들어서, 코딩에서 불필요한 작업보다는 일에 더 집중하여, 함수를 불러서 사용하듯이 할수 있다는 부분이다.



아래의 그림과 같이 기존의 코딩은 대부분이 다른 기능들을 많이 배우고 익혀야, 코딩을 할수 있는 부분에서, 함수형 코딩은 사용성에 더 우선순위를 갖고 이용하면 되는 것이다.
즉, 코딩의 기술적 부분은 전문가에게 맡기고, 실제 사용에 더욱 집중하게 하자는 것이 xython의 방향성이다



기존의 코딩은 고급에 버금가는 수준이 되어 야만, 어느정도 원하는 부분까지 만들 수 있다는 것에서 사용자 편의성을 최우선으로 고려하여 생각보다, 업무에서 자동화가 요구되는 부분은 유사한 형태들이 많다는 것에서, 그 기반을 두고 만든 것으로, 패러다임의 변경이 필요한 시기이다.

이 모듈화에서 가장 중요한 부분은 얼마나 많고 다양한 모듈과 함수가 있어서, 여러 사람들의 요구에 적절하게 대응을 할 것인가라는 부분이며, 완전 초보자들을 위하여 코딩 없어도, 중요한 부분들을 사용할수있도록 만드는 GUI프로그램으로, 초보자들도 사용할 수 있는 기능 또한 만들었다

초보자들을 위한 GUI프로그램 화면



어떻게 구성 되어있는가
함수형 프로그램이 제대로 작동하기 위해서, 가장 중요한 부분 얼마나 다양하고 많은 함수를 갖고 있느냐가 제일 중요한 부분이어서, 현재까지 (2023-11-01)기준 완성된 부분을 언급하면 아래와 같습니다.

1. 현재까지 완성된 전체 줄수는 약 25,000줄
2. 총 함수의 개수는 약 1,500개
3. 함수의 이름 관 용어를 통일 시켜, 사용하기 쉽도록 만듦
4. xython패키지는 약 11종류의 모듈로 구성중
  • pcell – 엑셀을 컨트롤하는 함수들 (436개)
  • mailmail – 아웃룩의 컨트롤 하는 모듈들 (67개)
  • ganada – 워드를 컨트롤 하는 모듈들 (225개)
  • jfinder – 정규표현식을 쉽게 사용하도록 만든 것 (48개)
  • youtil – 여기저기 사용되는 많은 함수들 (225개)
  • 기타 : anydb, pyclick, pynal, youtil2, mygrid, rgraph (약 500개)
5. 기초사용자를 위한 GUI프로그램 1차 작성 완료
6. VBA로 작성된 코드도 일부 사용가능

즉, 사용자의 입장에서 대부분 많이 사용하는 기능들을 함수화 하여 놓은 것이며, 최소한의 Python에 대한 지식으로 많은 기능들을 사용할 수 있는 것이다. 아래에 그림의 형태를 참조하시기 바랍니다



몇번의 클릭만으로 어떤 업무들을 쉽게 할수있는가?
기본적인 이해를 돕기위하여 어떠한 기능들이 있는지, 아래에 1500개의 함수와 예제중에서 몇가지 기능들을 설명합니다

기본 예제
 괄호안의 자료만 갖고 오고 싶을 때
 문자열로된 시간을 인식하여, 두 시간 사이의 기간을 계산하고 싶을 때
 선택한 셀이 있는 위치에서 아래의 5줄을 원하는 곳에 복사하기
 두 영역을 비교해서 틀린 것에 색칠하기
 자주 사용하는 테두리 형태를 저장해 놓고, 선택한 영역에 사용하기
 선택 영역중 맨 앞에 특정한 글자가 없는 셀은 한 칸 뒤로 이동시키기
 특정 폴더안의 모든 화일 이름들을 갖고 와서 이름을 한번에 바꾸고 싶을 때
 선택한 영역의 값에서 숫자만 없애고 싶을 때
 선택한 영역에 몇칸씩 전체에 삽입하고 싶을 때
 선택한 영역에 자동으로 사진이 맞도록 넣고 싶을 때
 같은 자료가 있는 것만 색칠하고 싶을 때

중급 예제
 한글을 초/중/종성으로 분리하여 여러 단어와 유사도를 비교하고 싶을 때
 엑셀의 자료를 워드의 특정 테이블의 위치로 복사하거나 메일에 Table형식으로 만들어서 만들고 싶을 때
 엑셀의 관리시트에서 클릭하면, 워드의 특정 칸에 자료가 들어가게 하고싶을 때
 엑셀의 주소록을 이용하여, 이름에 맞도록 조사를 변경하여 모든 사람에게 이메일 보낼 때
 엑셀의 Control시트에서 자료를 갖고 와서 관련 부서의 담당자에게 기술검토 요청을 하는 메일을 보내도록 하는 것
 매주 발주 및 현재 남은 구매요청항목들에 대한 보고서 작성 할 때
 정규표현식의 결과를 엑셀에 표시하고 싶을 때
  • 고급 예제
  • 선택한 폴더안의 사진들을 하나씩 현재 열린 엑셀 시트에 이름이 있는 영역에 맞도록 변경하면서 사진들이 들어가게 하고 싶을 때
  • QNA로 올라온 요구들에 대한 대응 및 사이트에 Upload
  • 실시간 그래프들에 대한 공유
  • VBA 함수를 엑셀화일에 만들고 버튼에 연결하여, 버튼을 누르면 실행되게 하기
  • 고급 정규표현식
  • 엑셀자료를 DB화하여 SQL을 사용 가능하게 만들기
xython으로 한번 만들어 본 다른 것들
– 테트리스처럼 화살표를 누르면 내려오는 모양이 바뀌면서, 맨 아래까지오면 없어지고 다른 것이 내려오도록 만듦
– 한글을 한자씩 입력하면, 자음과 모음, 받침을 분리해서, 엑셀의 셀에 나타나게 만든 것, LED의 모양처럼 나타나게 만드는 목적
– 지렁이 움직이듯이 0.5초마다 정지된 곳을 빨간색으로 만들고, 화살표로 움직임을 조절할 수있는것
– 겔러그의 단순 모양처럼, 맨아랫부분에서 화살표를 쏘고, 윗부분의 회색블럭에 맞으면, 터지는 모양을 한다음 없어지고, 다 맞추면 새롭게 다시 회색블럭이 만들어지게 하는것

그렇다면 xython이 왜 필요하며, 어느 정도의 효과가 나타날 것인가?
세계적인 RPA회사인 AA(오토메이션에니웨어)가2020년 15,000명의 사무직 직원의 업무형태 및 시간에 대한 설문한 것이 있는데, 그결과는 다음과 같습니다
  • 이메일 관리 : 28%
  •  IT시스템 데이터 입력 : 26%
  •  IT시스템 내부보고서 출력 : 24%
추가적으로 한국의 경우는 평균적으로 매일 부수적인 업무에 할애하는 시간이 3.58시간이라는 결과를 발표하였으며, IBM은 기업 업무의 최대 63%를 자동화 할수있다고 발표하기도 하였다.
즉, 업무의 특성에서 개인적인 업무를 위하여 xython 프로그램을 사용한다면, 많은 부분에서 능률을 향상 시킬 수 있을 것이라 생각합니다

개인적인 부분을 보면, 매일 3~4번은 개인적으로 자동화를 위해 만든 것을 사용하고, 때때로 시간이 많이 들어가는 일에 적용 하다 보니, 하루에 1시간이상은 효과를 보는 듯하며, 이것은 더욱 효율적인 업무에 집중하여, 이익 창출의 효과가 날것으로 보입니다

추가적으로, 개인의 코딩능력이나 자료변경의 기술이 높아 져야하는 이유는, 점점 보안의 강화와 자료 유출에 대한 부분이 강화되어, 타 부서나 AI, 외부 사이트를 이용하는 것은 불가능에 가깝고, 직접 해야 하는 부분이 강해지는 것이다.
진행방향
현재까지 만든 것을 기본으로 개괄적으로 Upgarde해야하는 부분을 언급하면 아래와 같습니다.

1) 기본 모듈 패키지인 xython의 Upgrade
2) 사용자 편의성을 위한 프로그램 추가 작성하여, 설치없이 자료처리가능
3) 한글함수로 주요 함수들을 변경하여, 한글로 코딩이 가능하도록 변경예정 (localization)
4) 다른 나라에서도 사용이 쉽게 만드는 글로벌화
5) 자료분리를 위한 정규표현식을 사용하기 쉽도록 interface를 작성, 일반인들도 쉽게 정규표현식을 사용할 수 있도록 가능
6) 약 1,500개의 함수를 기반으로 개개인이 필요한 것을 만들 수도 있으며, 자주 사용되는 고급 예제를 100개이상 만들어 버튼으로 선택하여 실행할 수 있는 기능 제공
7) xython.co.kr을 이용한 문서화 진행중 (Upgrade필요)
8) 별도의 설치버전 작성
9) 웹서비스를 통하여 예제의 다운로드 및 자동 upgrade
10) 1차 함수이름의 기준 마련, 고급화를 위한 2차 명명규칙 필요
11) 추가 모듈들의 작성
12) QNA 사이트 운영