Excel & IT Info

아이엑셀러 닷컴, 엑셀러TV

VBA

[VBA 입문] 01강. Excel VBA 오리엔테이션

권현욱(엑셀러) 2023. 9. 26. 00:04
반응형

들어가며

안녕하세요? 엑셀러(Exceller)입니다. 틈틈이 VBA 강의를 진행해 왔는데, 이런 요청을 하신 분들이 더러 있었습니다.

 

"누구 널뛰듯 하지 말고, 제발 VBA의 기초부터 차근차근 체계적으로 설명해 줄 수 없느냐?"

 

하고 말이지요(물론 반말을 하신 것은 아니고 정중히 요청 ^^). 그래서, 준비했습니다. VBA 기초 및 프로그래밍의 기본 개념을 여러분들이 잘 정립하실 수 있도록 말이죠. 가볍지 않은 주제지만 그래도 가벼운 마음으로 즐겨보시기 바랍니다.

반드시 알고 있어야 할 핵심적인 내용을 중심으로 강의로 구성할 계획이며, '입문'이라는 취지에 맞게 아래와 같은 관점에서 콘텐츠를 구성하겠습니다.

'더하기'보다 '빼기' 우선
'적게' 배우고 '많이' 활용
'실용성' 추구

 

어떤 식으로 전개될지 감이 오시나요? 출발합니다.

권현욱(엑셀러) | 아이엑셀러 닷컴 대표 · Microsoft Excel MVP · Excel 솔루션 프로바이더 · 작가

호랭이 담배 피던 시절 이야기 하나

베이직(BASIC)에 대한 이야기부터 시작합니다. BASIC은 1964년 미국의 다트머스(Dartmouth) 대학에서 개발한 프로그래밍 언어입니다. BASIC이라는 단어에서도 알 수 있듯, 배우기가 상대적으로 쉬웠습니다. 프로그래밍 경험이 없는(요즘 말로 '문과생') 사람들도 쉽게 코딩할 수 있도록 하기 위해 인간의 언어와 유사하게 만들어졌습니다.

 

(이미지: history-computer)

 

이렇게 개발된 BASIC은 오랜 세월을 거치면서 꾸준히 발전하게 됩니다. 하지만 세상만사 양이 있으면 음이 있는 법. 배우기는 쉬운 편이었지만 깊이 파고들수록 불편한 점들이 많았습니다. 컴퓨터 전문가들로부터는 천대를 받았고, 'BASIC은 프로그래밍을 처음 입문하는 단계에서 거쳐가는 언어'라는 인식이 강했습니다.

 

그러다가 1991년 마이크로소프트가 윈도용 '비주얼 베이직(Visual Basic)'을 출시하면서 Visual Basic이 세간의 주목을 받게 됩니다. Visual Basic 덕분에 윈도에서 독립적으로 실행할 수 있는 프로그램을 만들 수 있게 되었습니다.

 

Visual Basic for Windows

 

Visual Basic과 같은 언어를 4세대 언어(4GL)라고 하며, '개체지향형'(Object-oriented) 언어입니다. '개체지향형'이라고 하니까 뭔가 거창하고 그럴듯해 보이지만 알고 보면 별 것 아닙니다.

BASIC 같은 3세대 언어에서는 하나에서 열까지 모두 새로 만들어 사용해야 했습니다. '네모 상자'를 하나 만든다고 상상해 볼까요. 대략 이런 과정으로 진행됩니다.

 

  • 점을 하나하나 찍어서 선을 만든다.
  • 원하는 길이만큼 선이 만들어졌다면 필요한 만큼 복사를 한다
  • 선을 하나씩 이어 붙여서 사각형을 만든다.

 

이 정도라면 그래도 할 만 하지만 어려움은 여기서 끝나지 않습니다. 한 번 만든 만든 네모 상자를 다른 곳에서 재사용하는 경우가 많은데 이것도 매우 힘이 들어서, 차라리 처음부터 다시 만드는 경우도 허다했습니다(전문 용어로 '삽질').

 

Visual Basic의 등장으로 이 모든 과정이 획기적으로 편해졌습니다. 웬만한 것들은 이미 만들어져 있어서('라이브러리'라고 합니다) 프로그래머는 눈에 '보이는' 것을 마우스로 콕콕 찍어주기만 하면 되었습니다. 그래서 'Visual'이라는 단어가 앞에 붙었나 봅니다.

 

참고로, 여기서 언급한 '네모 상자'를 '오브젝트'(Object)라고 합니다. 우리말로 '객체'나 '개체'라고 번역됩니다. 다른 프로그래밍 언어에서는 '객체'라고 하는 경우가 많은데 VBA에서는 '개체'라고 합니다. 개체는 매우 매우 중요한 개념이며, 앞으로 수도 없이 나옵니다.


그러면 VBA란 도대체 무엇인가?

엑셀을 오랫동안 사용해 오던 분 중에서도 엑셀에 VBA 엔진이 장착되어 있다는 사실조차 모르고 지내는 분이 많습니다.

 

"그러면... VB는 그렇게 해서 탄생하였다는 것을 알겠는데 VBA는 또 머여요?"

 

이런 의문이 드시지요?(들어야 정상입니다. ^^) VBA란 Visual Basic(VB) for Application의 줄임말입니다. 'VB는 VB인데, 특정한 애플리케이션을 위한 VB'라는 뜻이지요.

 

"그럼 Application은 또 뭔가요?"

 

하는 분이 저기 두어 분 있군요. 요즘은 '애플리케이션'을 줄여서 '앱'이라고 하죠? 쉽게, "엑셀이나 워드, 파워포인트 등이 앱이다"라고 생각하면 됩니다. 만약 여러분이 엑셀 VBA를 마스터한다면 다른 애플리케이션의 VBA도 덩달아 마스터할 가능성이 높아집니다. 엑셀 VBA가  다른 VBA에 비해 개체도 많고 방대하기에 그렇습니다.

 

(이미지: 아이엑셀러 닷컴) VBA로 작업한 결과 (예시)


인공지능(AI) 시대에 VBA를 배워도 될까?

이 시점에서 느닷없이 내보는 퀴즈 하나 ㅡ "공개된 지 5일 만에 월간 사용자 수(MAU) 100만을 넘었고, 두 달 만에 1억을 달성. 우버(70개월), 스포티파이(55개월), 인스타그램(30개월)은 물론 틱톡의 기록(9개월)마저 가뿐하게 뛰어넘은 괴물 같은 존재"가 있습니다. 무엇일까요?

 

(이미지: unsplash)

 

짐작하셨겠지만, 챗GPT 이야기입니다. 생성형 AI는 이제 신드롬을 넘어 하나의 '현상'이 되어가고 있습니다. 챗GPT만 있는 것도 아닙니다. 구글 바드(Bard), 앤쓰로픽 클로드(Claude)도 있고, 국내에도 네이버 하이퍼클로바X, LG 엑사원 등이 저마다의 특징과 장점을 내세우며 진검승부를 예고하고 있습니다.

 

AI를 탑재한 프로그램들도 속속 등장하고 있습니다. 검색엔진에는 이미 AI가 적용되었고, 23년 9월에는 Windows 11, 23년 11월에는 Microsoft 365에 코파일럿(Copilot)이라는 AI가 장착된 버전이 출시될 예정입니다. 그런 마당에 1960년대에 만들었다는 VBA를 배우려고 하니까 뭔가 트렌드에 맞지 않는 것 같은 생각이 들기도 합니다.

 

챗GPT 같은 생성형 AI는 VBA를 쉽게 접근할 수 있게 도와줍니다. 생성형 AI의 문제점 중 하나로 지목되고 있는 환각(hallucination) 현상도 VBA 세계에서는 성립하기 어렵습니다. AI의 작업 결과에 대한 오류 여부를 바로 확인할 수 있기 때문입니다.

 

(Excel) VBA가 다른 프로그래밍 언어에 비해 좋은 점들이 있습니다.

  • 배우기 쉽고 별도의 비용(시간, 금전)이 들지 않는다(오피스 프로그램 설치 시 자동으로 인스톨).
  • Excel VBA를 잘 익혀두면 다른 앱의 VBA를 이해하기 쉬워진다.
  • VBA를 공부하다가 포기해도 엑셀 실력은 남는다.

 

물론 단점과 불편한 점들도 있습니다만, 누가 뭐라 해도 현시점에서 Excel과 가장 궁합이 잘 맞는 프로그래밍 언어는 VBA입니다. 엑셀과 한 몸인 VBA를 사용하다가 부족하거나 보완할 영역과 맞닥뜨리면 다른 툴로 확장하는 것도 방법입니다.

나중에 파이썬(Python)이나 C 같은 다른 프로그래밍 언어를 사용하게 될 경우에도 VBA에서 익힌 개념들은 큰 도움이 됩니다. Microsoft에서도 더 이상 VBA 엔진을 업그레이드하지 않기에 언젠가는 역사의 뒤안길로 사라질 수도 있겠지만 아직은 VBA의 효용이 많습니다. 


나가며

'그렇다면 VBA를 한번 배워봐야겠어'라는 생각이 마구마구 생겼기를 기대해 보면서 오리엔테이션은 이쯤에서 접습니다. 이야기가 공연히 길어졌습니다. 역시 무언가를 덜어내는 것이 추가하는 것보다 훨씬 힘든 일인 것 같습니다.

 

반응형