안녕하세요, codeddict입니다.


주말은 정말 너무 빨리 흘러가는 것 같습니다.

내일이 벌써 월요일이라니요ㅠㅠ 


그래도 편안하고 즐거운 주말 보내셨기를 바래보면서,

오늘은 VBA을 시작하기 전, 반드시 설정이 되어있어야 하는 '개발도구' 설정 방법과 VBA 편집기/에디터 (코드 작성기)에 대한 설명을 해드리려고 합니다. 


OS는 윈도우10 그리고 오피스 제품 버전은 2016 기준으로 작성이 되어있으며, 기타 버전 역시 대동소이 하오니 참고하시면서 설정 진행해주시면 될 것 같습니다!


시작합니다!



1. 엑셀 실행하기


우선 PC에 설치된 엑셀을 실행합니다!

윈도우키를 누르신 후 바로 'EXCEL'을 키보드로 입력하시면 엑셀 아이콘이 검색창에 나옵니다.

엑셀 아이콘을 클릭해줍니다!


앞으로 자주 사용하게 될테니 '시작 화면에 고정'와 '작업표시줄 고정'을 해주시면 좋겠네요!^^



2. 새 통합 문서 클릭

새 통합 문서를 생성 후 진행하시거나, 기존에 작업하고 있던 저장된 엑셀 파일을 실행하셔도 무관합니다. 이번에는 새 통합 문서를 생성해서 진행하는 것으로 하겠습니다. 


새 통합 문서 클릭!



3. 탭(TAB) 확인

빨간 원으로 표기해놓은 홈, 삽입, 페이지 레이아웃, 수식, 데이터, 검토, 보기, 팀을

눌러보면 대분류에 맞는 기능들이 모여져 있습니다. (물론 이마저도 커스터마이징 탭 생성 가능)

이 대분류들을 엑셀에서는 탭(TAB)이라고 부릅니다.


새 통합 문서를 생성하고, 탭을 확인했는데 '개발도구' 탭이 없다면,

다음 설명을 따라오시면 됩니다. 


'나는 개발도구 탭이 보이는데요!?' 하시는 분들께서도 상기 차원에서 다음 설명을 읽어보시길 추천드립니다!^^



4. '옵션'으로 진입하기

'개발도구'탭이 없다면, 활성화 시키면 되겠죠?

'파일' 탭을 클릭합니다. 그리고 빨간 원형 표기 부분에 보이시는 '옵션'을 클릭!




4. '개발 도구'를 찾자!

'옵션'을 클릭하셨다면, 아래와 'Excel 옵션' 창이 뜹니다.

왼쪽에 옵션 목록이 있는데, 그 중에 '리본 사용자 지정'을 클릭합니다.

그러면 현재 활성화 되어있는 탭에는 체크박스에 v (checked) 표시가 되어있고,

비활성화 되어있는 탭에는 체크박스에 v 표시가 없습니다 (unchecked).


우리는 VBA를 시작할 예정이니, '개발 도구' 항목에 check 해줍니다.




5. 엑셀 빈 시트로 돌아오기

개발도구 항목을 체크한 후, 'Excel 옵션' 창 오른쪽 하단 '확인'을 눌러서

엑셀 시트로 돌아옵니다.

그리고 탭 목록을 보시면 사진과 같이 '개발 도구' 탭이 활성화 되어있는 것을 볼 수 있습니다!




6. VBA의 시작!

이제 모든 준비가 끝났습니다. 

'개발 도구' 탭을 클릭합니다. 빨간 원으로 표시해놓은 'Visual Basic' 아이콘을 클릭합니다.

마우스로 아이콘을 클릭하거나, Alt + F11을 순차적으로 눌러서 Visual Basic Application 편집기를 실행 할 수도 있습니다. (보통 Alt + F11로 진입을 많이 합니다. 익숙해지면 단축키로 하실거에요!)




7. Visual Basic Application 편집기와의 첫만남

지금까지 잘 따라오셨다면, 이렇게 아무것도 없는 창을 보실 수 있습니다.

방금 실행하신 프로그램은 Visual Basic Application 편집기로, 이곳에 스크립트 또는 코드를 작성해서 오피스 프로그램을 제어한다거나, 내가 사무실에서 지루하고 반복적으로 하는 일들을 컴퓨터에게 시킬 수 있도록 지시를 남겨놓는 '게시판' 같은 곳입니다.


보통 편집기, 에디터라고 부르기도 하는데

프로그래머마다 사용하는 편집기도 사실 다양합니다.

어떤분들은 윈도우 내장 프로그램인 메모장이나 워드패드 작성해서 VBA 편집기에 옮긴 후 실행해보거나, 수정하시는 분들도 계시지만, 저는 개인적으로 다른 3rd party (써드파티: 제3의 회사)에서 특정 기능을 부각해서 만든 프로그램을 사용하는 편입니다. (예: Notepad++)


사실 VBA 편집기도 충분히 좋은 편집기입니다. 앞으로 진행하는 설명글은 전부 VBA 편집기로 진행을 할 예정이니, 참고해주세요!^^




8. VBA 편집기를 이용한 첫 코딩!

편집기를 열었으니, 뭐라도 해봐야겠죠?ㅎㅎ

간단한 메세지박스 (팝업 메시지창)을 띄워보도록 하겠습니다.


사진과 같이


Sub test()


Msgbox "안녕하세요" & vbCrLf & vb CrLf & "codeddict의 vba 강좌입니다.", vbInformation, Visual Basic for Application by codeddict"


End Sub


를 작성후, Sub을 실행해보면 (F5 입력 또는 상단에 위치한 초록색 화살표 클릭)


※ vbCrLf는 출력부 내용에서 줄바꿈을 해주는 명령어입니다!




이렇게 메세지박스가 출력이 되어 방금 작성한 내용이 그대로 출력이 되어 나옵니다.


메세지박스의 활용은 다양하지만, 


i) 저는 디버깅 용도로 사용하거나 (보통 debug.print 기능과 같이 사용함 / debug.print 기능은 향후 자세하게 설명하겠습니다! 정말 중요함!!), 


ii) 어떤 작업이 마무리 되었을때 사용자에게 알림이 필요할 경우 사용하는 편입니다.


모든 기능의 끝에 메세지박스가 나오면, 사용자 입장에서는 프로그램이 아니라 바이러스가 아닌가 생각할 수도 있기 때문에, 사용에 주의해야 하는 것이 메세지박스입니다^^;

뭐든 과유불급인 것처럼 말이지요!




오늘은 이렇게 '개발 도구' 탭을 활성화 하는 방법과 함께,

간단하게 VBA 편집기를 이용하여 메세지박스를 구현해보았습니다.


다음 강의에서는 VBA를 어떻게 활용하는지, 회사에서 사용하는 실제 예제와 함께 돌아오도록 하겠습니다.



감사합니다!







안녕하세요, 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를 배우고자 하시는 분들께 동기부여가 되어

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


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


감사합니다!