Skip Navigation Links.
Expand VBAVBA
엑셀프로그래밍이 필요한 이유
Expand ExcelExcel
Expand External LibraryExternal Library
Expand SolutionSolution
Expand EssayEssay

VB-Editor(VBE)|VBE|VBA|ProjectWindow|PropertyWindow|
|ImmediateWindow|LocalsWindow|ModuleWindow|

엑셀 프로그래밍을 어떻게 하지??

조건부서식을 사용한다던가
엑셀의 수식상에서 논리함수와 조건식을 적절히 활용한다던가
콘트롤과 수식을 적절히 엮어서 활용한다던가
엑셀을 마우스로 뚝딱..뚝딱..컨트를올 갖다 붙이고 수식좀 엮어 연결하고
이런식으로도 엑셀 자동화 프로그래밍을 만들어서 사용하기도 한다
이것만으로는 부족함을 느낀다면 본격적인 엑셀프로그래밍을 시작하게 된다
문제는 부족함을 느낄수 있는 사람만 성장을 하게 되고
엑셀사용에 있어서의 성장은 VBA를 활용하려는 욕구가 생길때이다
VBA라는 개발언어를 사용한다면 ..어떤 일이 벌어질까??
이미 잘 활용하라고 엑셀에 포함되어있는 도구를
그냥 쓰지 않고 있다면 자원과 도구의 낭비다
세상의 자원과 도구는 활용하라고 만든 것!!
VBA라는 언어때문에 엑셀은 단순한 스프레드시트가 아닌 각종 산업분야의
업무개선개발도구가 되게 되는 것이고
지금 이시간에도 머리를 쥐어뜯으면서
아이눔이..한번 돌리면 몇분이 걸려요??!@#
라고 하면서 고민을 하고 있는 분들이 수도 없이 많다
그런 문제를 풀어나가는데 필수적인 것이 VBA프로그래밍인것이다

VBA(Visual Basic for Application)이 무엇인가??

VBA는 이미 널리 알려진
프로그래밍개발도구 Visual Basic에서 가지를 치고 나온 녀석이다
특정한 목적을 위하여 특별히 만들어진 Visual Vasic 언어인것이다
또한 같은 형제격인 Visual Basic Script(VBScript)도 있다
VBA는 VB를 엑셀
(오피스의 워드,억세스,파워포인트등도 마찬가지)에
접목시켜서 오피스내의 모든 프로그램을 개발도구로서 활용할수 있도록 해주는 언어이다
그러니 ..엑셀을 통하여 VBA를 익히면 다른 워드나 억세스등에서도
같은 언어를 사용하게 되니 엑셀을 통하여 VBA를 배우면
VB를 지원하는 프로그램에서도 추가로 배울필요없이 사용하게 되는것이다
물론 VB.Net으로 또 발전된 VB언어는 새로운 기능들이 계속 추가 되는 것이고..
엑셀도 익히고..프로그래밍언어도 익히고
꿩먹고 알먹고 얼마나 좋은 일인가??!!

VBA(Visual Basic For Application)는
사용자와 엑셀(혹은 다른 프로그램들)의 사이에서
엑셀이 알아듣는 말로 통역을 해주는 역할을 한다고 생각하자
그러니 하나의 언어인것이다..컴퓨터언어인것이다
컴퓨터 언어는 어려울까???
지극히 간단하다
감정도 없고,감정이 없으니 일을 많이 시킨다고 화를 내지도 않는다
물론 컴퓨터 용량이 터질정도롤 일을 시키지 않는한..
엑셀을 자동화시킨다고 하는것은
시키고 싶은 일을 적어서(자판을 두들겨서) 전달하면 되는데
어디에 어떻게 적느냐??
그리고 우리가 시키고 싶은 일에 해당하는 컴퓨터가 알아듣는 말은
어떤말을 하여야 하느냐??
정해진 말들이 있고..정해진 문법들이 있는것이다
앞으로 이 페이지에서는 VBA혹은 VB라고 부르더라도 VBA라는것으로 아시기 바란다

범죄수사를 하는데..하드디스크를 복원하여 삭제된
화일을 살려낸다고 한다
이런곳에 사용되는 언어는 Low Level Language라고 할수 있고
VBA같은 언어는 High Level Language라고 할수 있겠다
여기에서 Low는 기계쪽으로 바짝 닥아간 언어라는 의미고
High라고 하는것은 인간쪽에 바짝 닥아간 언어라고 할수있는것이다
기계쪽의 복잡한 구조를 다루는것이 아니고
우리가 하는 일의 구조를 다루기 위한 언어인것이다
기계쪽언어는 도대체 뭐고..인간쪽언어는 도대체 뭐야???

예를 들어서 컴퓨터를 키면 화면이 환하게 밝게 켜진다..
이런 일을 하는 것도 프로그래밍이다
이런 것이 기계쪽에 가까운 언어의 일이다
엑셀 프로그래밍을 하면서 화면의 밝기를 조정하는 그런일을 하는 것이 아니다
그럼 인간쪽일은 무엇인가???
인간쪽일은 우리가 사는 세상..
예를 들어서 바람이 분다
바람이 얼마나 쎄게 불면 벽이 무너지고 어느 정도 불면 벽이 흔들린다
어느 정도의 바람까지 벽이 지탱하게 하고 싶다
이것이 모두 계산이다
이런 계산은 일상의 것들이다
그냥 엑셀에 적당한 로직을 구성해서 넣고 돌리면 벽을 얼마나 튼튼하게
하여야 하고 그러면 돈이 얼마가 더 들고..모두 계산이고
이런 계산을 사람이 생각하는 논리를 엑셀에 적절히 풀어 놓아주면
엑셀이 골빠지는 일은 대신해주는것이다
인간과 다이렉트로 붙어서 일을 해주는 인간친화적 프로그래밍인것이다

어떤 수백장의 문서화일을 받았다
문서속에서 단어가 [사람]이라는 단어를 모두[인간]으로 바꾸고
[사랑]이라는 단어를 [love]로 바꾸고
20단어 마다 줄을 바꾸어서 재 편집하고 싶고
뭐..이런 것들이 사람의 일이다
이것을 밤을 새우면서 마우스질을 하고 있다면
현대인이 아니다
이런 당장 필요한 작업을 대신해주는 것이 엑셀프로그래밍이다

세상의 일은 수도 없이 많고
수도 없이 많은 일은 셀수 있는 일..합할수 있는 일..뺄수 있는 일..
평균을 낼수 있는 일들로 꽉차있다
이런 일상의 계산과 과학자의 계산과 개발자의 계산과 가정주부의 계산과
세상은 작은 계산에서 부터 큰계산까지 꽉차있고
이런 계산을 해주는 것이 엑셀이고
이것을 좀더 자동화시켜서 팽팽돌아가게 하는 것이 엑셀프로그래밍이다
사람이 일차적으로 계산기를 찾고 뭔가 효율적으로 하고 싶고
하는 인간의 일을 직접적으로 해주는 것이 엑셀프로그램이다

그럼 어느곳에 일을 시키고 싶은 말을 작성하여야 할까??

엑셀시트의 셀에 작성하나..??
어디엔가 글로 풀어야 할것이다

ALT+F11 단축키를 누르거나, 도구/매크로/Visual Basic Editor를 실행하거나, 시트탭의 단축메뉴에서 코드가기를 실행하거나..




이상하고 낯선 환경이 열렸다
처음 엑셀을 열었을때 수만은 셀을 보면 황당하듯이,
이곳도 역시 뻘쭘,황당하게 생겼다
이곳이 여러분의 상상력과 엑셀의 각종오브젝트와 VBA함수와 표현식등으로
적절히 조립..조합해 대는 곳이다
바로 이곳이 여러분이 엑셀에 일을 시키고 싶은 것을
약속된 단어로 정해진 문법대로 적으면 되는 것이다
이곳을 Visual Basic Editor(VB편집기)라고 한다
앞으로 이곳에 명령을 하는데 필요한 단어들은
몇가지 되지 않는 단어(수백개정도라고 생각하라!!)들이니까..
너무 걱정마시기 바란다
그리고 몇개를 알고 나면 요령이 생기고..
감이 잡히면 신나는 창의적,논리적놀이터가 된다

이환경의 메뉴에서 삽입/모듈을 크릭한다


클래스모듈,사용자정의폼 같은것은 아직 신경쓰지 마시기 바란다
우선 신경써야 할 곳은 모듈시트(Module Sheet)이다!!
모듈化!!모듈化!!하자는 소리를 많이 들었을것이다
어떤일의 표준적인 하나의 구성요소들을 모듈이라고 하듯이
이곳의 모듈시트한장이 이제 여러분의 프로그래밍을 할 하나의 구성요소화되는것이다
이 편집기에 여러가지 모듈을 여러분들의 생각에 따라서
삽입도 되고 삭제도 되면서 여러개의 모듈이 하나의 프로젝트(Project)가 되는 것이다


모듈시트에는 여러가지가 있다
여러개의 모듈시트들이 모여서 하나의 프로젝트가 된다

VB편집기(VBE)를 살펴보자

  • |<<
  • <<
  • >>
  • >>|
1 Of 5









통합문서를 바탕으로 만들어지는 엑셀소루션(Excel-Based-Solution)을
하나의 개발프로젝트라고 부를수 있는것이다
그래서 엑셀을 구성하고 있는 구성요소들..즉 오브젝트들을 프로젝트창이라는곳에 관리하게 된다
sheet1,sheet2,sheet3는 모두 프로젝트를 구성하는 구성요소이고
각각의 시트는 자신의 모듈시트(Sheet Code Module Sheet)를 하나씩 갖고 있다
각각의 시트를 크릭하면 해당 모듈시트로 모듈시트창이 나타나는것을 볼수있다
ThisWorkBook이라고 하는것은 통합문서(WorkBook)오브젝트를 말한다
물론 WorkBook오브젝트도 하나의 모듈시트(WorkBook Code Module Sheet)를 갖고 있다
이렇게 한권의 통합문서는 여러개의 구성요소로 구성되고 각각의 구성요소는 모듈시트를 갖고 있는것이다
일반 모듈시트(Standard Code Module Sheet)는 필요에 따라 삽입메뉴를 통하여 계속추가할수 있다
일반 모듈시트가 아닌 다른 구성요소에 달려있는 모듈시트들은
자신이 갖고 있는 이벤트프로시져라고 하는 것을 갖고 있다는것만 알고가도록 하고,
초보님들은 당분간 모듈창,직접실행,속성창,프로젝트창
모듈시트는 일반모듈시트만 생각하도록 하자!!
다른 창들과 다른 모듈시트들은 처음부터 신경쓰면 헷갈린다