엑셀 VBA 강좌(1): 엑셀 VBA 개요
이전 엑셀 VBA 강좌 예고의 본편 첫 글이다.
엑셀 VBA 강좌를 시작합니다. (강좌예고, feat.엑셀 VBA를 권장하는 이유)
1. 엑셀 VBA 개요
VB와 유사한 VBA 언어로 작성된 기능을 Macro라고 한다.
1.1. VBA, Macro 개념
VBA(Visual Basic for Application)는 MS Office 제품(Excel, PowerPoint, Word, Access, Visio 등)에 내장된 개발 언어(및 개발 환경)을 의미한다.
Macro는 다음 의미이다.
- 반복 작업을 자동화한 기능
- VBA(개발 언어)로 작성된 Procedure(처리 절차, 기능)
엄밀하게 말하면 VBA 언어로 작성된 기능이 Macro라서 다른 의미이나, VBA와 Macro는 같은 의미로 봐도 무방하다. VBA는 엑셀 활용을 극대화하는 최고의 도구이며 생산성(투자 시간 대비 산출물의 양과 품질) 향상에 큰 도움을 줄 수 있는 최적의 도구이다.
VBA는 Compile 언어가 아닌 Interpret 언어이며, 별도 개발도구(Visual Studio, Eclipse, Delphi 등)를 설치할 필요가 없다. (MS Office 제품에 이미 들어 있음) 개발과 배포가 단순한 장점이 있다.
VB와 VBA는 언어적 차이점이 거의 없으나, VBA는 multi thread를 지원하지 않고 독립된 실행파일(.exe, .dll 등)를 생성할 수 없는 제약이 있다.
1.2. 엑셀 VBA를 접근하는데 필요한 경험, 지식, 마음가짐
엑셀을 사용하는 사람은 많지만, 엑셀 VBA를 사용하는 사람은 많지 않다. 엑셀 VBA의 존재조차 모르는 사람도 많고, 업무에 도움이 된다는 것을 알면서도 손대지 않는 사람도 많다.
엑셀 VBA를 시작할 때 다음을 꼭 염두에 두기 바란다.
- 엑셀 VBA를 잘 사용하려면 기본적으로 엑셀을 잘 사용해야 한다.
- Application(C/S, Web, Shell script 등 무엇이든) 개발경험이 있으면 언어는 금방 익힐 수 있다.
- Visual Basic 언어 문법에 대한 이해가 있으면 가장 좋다.
- 엑셀 Object Model에 대해 이해가 필요하다.
- 상상력(이런게 가능할까? 이렇게 하면 업무에 도움이 되지 않을까? 등)이 필요하다.
- 검색력(Google을 잘 활용)이 필요하다.
- 조립(여러 구성요소, 서비스의 Mash-up 등)을 한다는 마음으로 접근하면 좋다.
- 무엇보다 중요한 것은 스스로 해결하고자 하는 마음과 의지이다.
1.3. 엑셀 VBA로 무엇을 할 수 있나?
엑셀이 할 수 있는 모든 기능, 각 기능들이 조합된 새로운 기능, 외부참조개체를 활용한 확장 기능 등 거의 무한 확장이 가능하다.
- 엑셀의 반복 작업 자동화
- 기본으로 제공되는 함수 외에 사용자 정의 함수를 만들어 사용
- 많은 엑셀 파일 생성, 병합, 분할 처리
- 자주 반복 사용하는 여러 단계의 작업을 기록하여 하나의 기능으로 만들고 단축키를 할당하여 쉽게 사용
- 엑셀 Add-In을 만들어서 엑셀 자체의 기능을 확장
- Database와 연계하여 CRUD 처리 (엑셀자료 Upload & Download, 현황 보고서/차트 작성 등)
- Web 연계 (네이버 사전 검색, 메타 표준용어 일괄 등록 신청 등)
- 다른 Application과 연동하여 대량 처리, 보고서/산출물 자동 생성
- UNiX shell, SQL, PL/SQL 등의 Script file을 생성하는 작업 처리 자동화
- 그외 상상, 검색, 하고자 하는 의지만 있으면 S/W 측면의 거의 모든 것이 가능함
1.4. 엑셀 VBA 학습의 단계적 접근
기본기를 익히는 단계와 활용하는 단계로 나누어 학습할 필요가 있다.
기본기 단계는 1단계)Object Model 익히기, 2단계)VB Syntax 익히기, 3단계)VB로 Object Model 다루기 순서로 학습하는 것이 좋다. 개념을 익히는데 빠르면 하루, 늦어도 3일 정도면 충분하고, 어느 정도 사용하려면 1~2주 이상 필요하다.
활용 단계는 4단계)외부참조 개체 다루기, 5단계)Module/UserForm 다루기, 6단계)Class 다루기 순서로 학습을 권장한다. 외부참조 개체(예: DB 연동을 위한 ADO, 웹 연동을 위한 HttpRequest 등)은 종류별로 학습해야한다.. 각각의 개체마다 용도나 사용방법이 달라서 그때 그때 필요한 개체를 학습하는 것이 효과적이다. 이 활용단계에서는 개인별로 학습과 활용에 필요한 시간이 천차만별로 다를 수 있다.
다음은 시간의 흐름에 따라 엑셀 VBA 각 단계별 학습 난이도/생산성을 도식화한 그림이다.
최소한 3단계까지는 되어야 업무에 쓸모 있게 사용할 수 있고, 도움이 될 수 있다. 1단계)Object Model 익히기 또는 2단계)VB Syntax 익히기를 조금 하다가 포기하는 경우가 많다. 포기하지 말고 3단계)VB로 Object Model 다루기 까지 꼭 해보자.
여기에서 오해하면 안되는 것은 모든 Object Model, 모든 VB Syntax를 다 학습해야만 VB로 Object Model을 다룰 수 있는 것은 아니다. 오히려 그렇게 학습하면 금방 질리고 재미도 없어서 쉽게 포기하게 된다. 모르는 게 생기면 그때 그때 구글에 검색해 가면서 조금씩 천천히 나아가면 된다.
1.5. 엑셀 VBA를 어려워 하는 요소와 해결방법
- VB 문법이 낯설고, 잘 모르겠고, 어쨌든 어렵다.
VB 문법은 C, C++ 또는 Java에 비하면 너무 간단해서 한 시간이면 기본은 모두 알 수 있다.
VB에서 OOP가 가능은 하지만, C++, Java 등에 비하면 제약이 많고 그만큼 단순하다.
- 엑셀 Object Model을 잘 모르겠다.
엑셀의 기본적인 Object Model은 5분이면 알 수 있다.
잘 모르겠다면 매크로 기록기를 이용하는 방법도 있고, 구글에 검색해 보면 된다.
- 필요한 기능은 어떻게 구현할지 잘 모르겠다.
구글에 검색하면 거의 대부분(90% 이상)은 이미 구현되어 있는 코드를 찾을 수 있다.
- 이걸 왜 내가 꼭 해야하는지 모르겠다.
직접 해보면 개인 업무 생산성이 향상되는 것을 알 수 있다.
VBA를 사용할 수 있는 사람이 많아지면 프로젝트/팀의 생산성이 향상된다.
1.6. 엑셀 VBA를 사용할 때와 사용하지 말아야 할 때
각자의 여건과 상황에 따라 다르겠지만, 일반적으로 다음과 같은 기준을 따른다.
1.6.1. 엑셀 VBA를 사용할 때
- 수작업에 소요되는 시간보다 VBA코드 작성에 시간이 현저히 적게 소요될 것으로 예상될 때
- 1회성 작업이지만 VBA코드 작성시 효과가 있을 것으로 판단될 때
- 작업이 2번 이상 반복될 것이 확실할 때
1.6.1. 엑셀 VBA를 사용하지 말아야 할 때
- VBA코드를 작성하다가 일정을 준수하지 못할 때(배보다 배꼽이 더 큰 경우)
- 1회성 작업이고, 수작업이 더 빠를 때
여기까지 엑셀 VBA의 개요에 대해 살펴보았다. 다음에는 엑셀 VBA 기초에 대해 살펴본다. 궁금한 점은 댓글로 남겨주기 바란다.
<< 관련 글 목록 >>
- 엑셀 VBA 강좌를 시작합니다. (강좌예고, feat.엑셀 VBA를 권장하는 이유)
- 엑셀 VBA 강좌(1): 엑셀 VBA 개요
- 엑셀 VBA 강좌(2): 엑셀 VBA 기초
- 엑셀 VBA 강좌(3): 엑셀 Object Model
- 엑셀 VBA 강좌(4): 엑셀 Object Model 다루기
- 엑셀 VBA 강좌(5): 엑셀 파일 확장자, VBE, 글꼴 설정
- 엑셀 VBA 강좌(6): 엑셀 VBA 언어 기본-변수
- 엑셀 VBA 강좌(7): 엑셀 VBA 언어 기본-문법(Syntax)
- 엑셀 VBA 강좌(8): 엑셀 VBA 언어 기본-자료형(Data type), 자료구조(Data structure)
- 엑셀 VBA 강좌(9): 엑셀 VBA How-To
- 엑셀 VBA 강좌(10): 엑셀 VBA로 개발하여 사용중인 도구
- 엑셀 VBA 강좌 전체 목차