취미/Visual Basic for Application (Excel)

[EXCEL VBA] VBA의 시작 그리고 우리의 가능성

codeddict 2018. 10. 25. 23:37

안녕하세요, codeddict입니다.



저도 VBA에 관심이 생긴지는 얼마 되지 않아 이렇게 설명글을 쓴다는 게 조금 어색합니다.


기록을 찾아보니 2017년 07월 05일부터 지금까지 회사에 필요한 사무자동화 프로그램을 147개 구축하고 현재도 지속적으로 유지/보수 중이네요. 이 중 가장 큰 프로젝트는 회사의 생산 및 재고관리 프로그램을 VBA로만 구축했고, 현재는 DB화 시켜서 다수의 유저가 동시 입력까지 할 수 있게끔 구축했습니다.


그 외에도 출하 및 수출 선적서류 작성 프로그램, 매입/매출 프로그램, 수주 대장 관리, 다수의 생산부서전용 프로그램을 오직 VBA로만 구축해서 만들었습니다. 이제보니 VBA로만 다양한 프로그램을 만들었네요!^^;


프로젝트명은 정보 기밀성으로 인해 가렸습니다 :)


향후 마이크로소프트에서 python과 같은 강력한 언어로 VBA를 대체 한다고는 하지만, 제 입장에서는 VBA는 앞으로도 지속적으로 배우고 싶은 언어임에는 확실합니다.


오피스 제품을 제어하는데 있어서는 VBA만큼 직관적인 언어는 없습니다.

그리고 VBA는 절차지향 언어라, 저같은 초보자도 한번 이해하기 시작하면 충분히 원하는 프로그램을 만들 수 있습니다. 


※참고: 절차 vs 객체지향 언어의 차이점 (위키피디아): 

https://bit.ly/2ywa8bW




예를 들어, 땅콩버터 샌드위치를 만드려면 아래와 같은 순서로 만들어야 합니다.


1. 식빵과 땅콩버터를 준비한다.

2. 식빵을 꺼낸다

3. 땅콩버터를 바른다

4. 반으로 접거나, 다른 식빵 한장을 덮는다.

5. 먹는다.


간단하게 봤을 때는 이런 그림이지만, 

우리가 컴퓨터에게 간단한 땅콩버터 샌드위치 하나를 만드는 일을 시키려고 한다면, 조금 더 구체적으로 설명을 해줘야합니다. 


예를 들면:


1. 돈이 있는지 확인한다.

2. 돈이 있을 경우, 장바구니를 들고 마트를 간다.

3. 마트에 도착 후, 식빵 또는 땅콩버터를 장바구니에 넣는다.

4-1. 식빵을 먼저 골랐다면, 땅콩버터를 찾으러 간다.

4-2. 땅콩버터를 먼저 골랐다면, 식빵을 찾으러 간다.

.

.

.


인간은 heuristics에 의해 직관적으로 행동할 수 있지만, 컴퓨터는 시키지 않은 것 외에는 생각하지도, 실행하지도 않습니다. 그래서 인간은 식빵 재료를 사러 간다고 했을 때, 꼭 마트에 가지 않고도 재료를 구할 수 있는 방법을 찾아내거나 할 수 있고, 식빵 재료를 사러 갔다가 갈비찜 재료를 사오기도 하죠 (제 이야기입니다).


그렇기 때문에, 컴퓨터가 나 대신 해줄 수 있는 일을 절차 절차 생각할 수 있다면, 프로그래밍은 쉬워집니다. 


이것을 우리는 프로시져 (절차)라고 생각할 수 있는데, 

프로시져는 집의 틀이라고 생각하면 쉬울 것 같습니다. 


그리고 그 틀에 벽을 붙이고, 가구를 들이고, 인테리어를 하는 것은 스크립트 또는 모듈화된 스크립트 (기능)로 채워넣으면 됩니다. 집이 어떻게 꾸며졌으면 좋겠는지, 어떤 순서로 꾸며졌으면 좋겠는지는 프로그램을 만드는 사람의 몫입니다.


물론 어느정도의 순서는 지켜져야겠지만, 이 순서 마저도 창의적으로 변형하여 결국 집을 만들 수 있습니다!


집의 틀만 보고 집이라 할 수 있을까요?

집의 틀이 없는 벽, 인테리어, 가구만 보고 집이라 할 수 있을까요?




서론이 많이 길어졌네요!^^;


아무튼 VBA는 사무자동화에 상당히 강력한 언어라고 생각이 되고, 

충분히 지속가능성이 있는 언어라고 생각합니다.


VBA는 Visual Basic for Application의 줄임말로, Visual Basic에서 파생되어 오피스 제품을 포함하여 Visual Basic을 지원하는 3rd party 프로그램/어플리케이션도 지원하는 언어입니다. 


매일 반복적으로 입력하는 수식, 숫자, 방향키 스트로크 역시 해결이 가능합니다.


심지어 제 회사에서 사용하는 제품 측정 카메라도 VBA로 제어가 가능합니다. (한 유명 카메라 제조사 K社에서는 간단한 VBA 제어 메뉴얼도 제공함).


모든 3rd party 프로그램을 제어하는데에는 VBA 언어 특성상 어려움이 있을 수는 있지만, 

항상 방법은 있습니다. 그것을 찾아내어 자동화 시켰을 때의 성취감은 정말 큽니다.



이 글을 보고 VBA를 배우고자 하시는 분들께 동기부여가 되어

수학의 정석 집합 구간만 공부했던 시절을 탈출할 수 있으면 좋겠습니다.


그리고 그 탈출에 작은 디딤돌이 될 수 있도록 하겠습니다.


감사합니다!