본문 바로가기
엑셀 (Excel)

[Excel 매크로 강좌] Excel 엑셀 매크로 VBA 란?

by ★√★ 2021. 2. 9.

안녕하세요, Davey 입니다. Python 글에 이어, 오늘은 VBA에 대해서 글을 작성하려고 합니다. 일단, EXCEL에 VBA를 아시는 분도 있지만, 모르시고, 처음 시작하시는 분들을 위해서, 일단, VBA가 어떤 것인지에 대해서, 간단하게 글을 작성하도록 하겠습니다. 

 

1) EXCEL VBA 란 ? (출처 : 위키백과)

 

 비주얼 베이직 포 애플리케이션(Visual Basic for Applications, VBA)는 마이크로소프트의 이벤트 반응형 프로그래밍 언어인 비주얼 베이직 6의 구현과 관련된 통합 개발 환경 (IDE)이고, 이것은 대부분 마이크로소프트 오피스 응용 프로그램에 내장되었다. VBA는 개발자들이 사용자 정의 함수들을 구축하게 할 수 있고, 과정을 자동화하고 Win32와 다른 낮은-수준의 기능을 DLL들을 통해 접근한다. 또한 애플의 Mac OS X를 위한 2008 버전부터 따로 오피스 응용 프로그램에 내장되었고, 마이크로소프트 맵포인트 및 마이크로소프트 비지오와 같은 다른 마이크로소프트 응용 프로그램들뿐만 아니라 적어도 부분적으로 오토캐드, 워드퍼펙트 및 아크지스와 같은 다른 응용 프로그램들에서도 구현되었다. 그것은 이러한 워드의 워드베이직과 같은 이전 응용 프로그램에 특화된 매크로 프로그래밍 언어의 기능에서 대체하고 확장한다. VBA는 또한 ODF와 같은, 다양한 파일 포맷 가져오기 및 내보내기 필터를 생성하는 데 사용할 수 있다.

 

그 이름이 제시하듯이, VBA는 비주얼 베이직에서 밀접하게 관련되어 있고 비주얼 베이직 런타임을 사용하지만, 일반적으로 독립 응용 프로그램보다는 호스트 응용 프로그램 안에서만 코드를 실행할 수 있다. 이것은, 그러나, 다른 OLE 자동화 사용으로부터 단일 응용 프로그램을 제어하는 데 사용될 수 있다. 예를 들면, 이것은 엑셀 데이터에서 워드 보고서를 작성하는 데 자동으로 사용되고, 차례로 응답된 관측 감지기에서 엑셀에 의해 자동으로 수집된다. VBA IDE는 Alt+F11 키 순서를 눌러서 오피스 문서 내에서 도달한다.

 

VBA는 기능적으로 풍부하고 유연하지만 윈도 API에서 콜백 함수처럼 사용되는 함수 포인터에 대한 제한된 지원과 같이, 몇 가지 중요한 제한들이 있다. 이것은 ((액티브X/COM) DLL들을 사용(하지만 만들 수는 없다)하는 기능을 가지고 있고, 이후 버전은 클래스 모듈에 대한 지원을 추가한다. (더 자세한 사항은 아래 링크를 보시면 됩니다.)

 

https://ko.wikipedia.org/wiki/%EB%B9%84%EC%A3%BC%EC%96%BC_%EB%B2%A0%EC%9D%B4%EC%A7%81_%ED%8F%AC_%EC%95%A0%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98

 

비주얼 베이직 포 애플리케이션 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 비주얼 베이직 포 애플리케이션(Visual Basic for Applications, VBA)는 마이크로소프트의 이벤트 반응형 프로그래밍 언어인 비주얼 베이직 6의 구현과 관련된 통합 개발 환경 (IDE)이고, 이것은 대부분 마이크로소프트 오피스 응용 프로그램에 내장되었다. VBA는 개발자들이 사용자 정의 함수들을 구축하게 할 수 있고, 과정을 자동화하고 Win32와 다른 낮은-수준의 기능을 DLL들을 통해 접근한다. 또

ko.wikipedia.org

2) EXCEL VBA를 활용

 

2-1) 매일 반복되던 업무를 자동화 할 수 있다.

 

매일 아침마다 업데이트해야 하는 시트, 다들 있으시죠? 단순 반복 업무라고 하더라도 매일매일 신경 써야 한다는 게 쉬운 일은 아닙니다. 동일한 작업에서 변경되는 부분이라곤 그저 데이터 밖에 없는데 매번 복사하고 붙여 넣고… 그러다 보면 실수도 하게 되죠. 이런 상황에서는 엑셀 VBA가 최고의 방안입니다. 다른 리소스에 있는 데이터를 자동으로 불러오도록 설정할 수 있고, 원하는 포맷으로 변경할 수도 있습니다. 간단한 코드 몇 줄로 매일 입력해야 하는 데이터를 클릭 한 번으로 읽어올 수 있는 거죠.

 

2-2) 일은 편하게 하고, 파일은 상대적으로 가볍게 할 수 있다.

 

용량이 너무 큰 데이터를 다룰 때, 게다가 그 데이터 안에서 여러 가지 함수를 적용해 관리하고 있을 때 파일이 무거워지는 경험을 해보셨을 겁니다. 이럴 때 엑셀 VBA를 이용해 함수를 적용하면 복잡한 함수들에 뒤엉킬 필요도 없고 속도 저하 문제도 해결할 수 있습니다. VLOOKUP 함수를 예로 들면 테이블의 범위 지정, 가져올 값이 있는 열 지정, 가져온 값들을 정렬할 위치 지정을 프로그래밍으로 구현할 수 있는 거죠. 그렇게 하면 셀 하나하나에 적용되어 있던 함수식은 전부 사라집니다. 당연히 파일도 가벼워질 것이며, 업무 처리 속도도 빨라지겠죠?

2-3) 대량의 데이터 수정을 한 번에 함으로써, 일의 능률을 높일 수 있다.

 

회사의 정책이 갑자기 바뀌었을 때, 혹은 여태껏 데이터 입력을 잘못해왔을 때! 대량의 데이터를 수정해야 하는 상황에 맞닥뜨리게 되죠. 설마 하나하나 찾아 바꾸거나, 혹은 Ctrl+F를 사용해서 바꾸셨나요? 이런 상황에서도 역시 엑셀 VBA가 등장해야 합니다. 예를 들어, 고객들의 이름을 정리해둔 시트에서 개인 정보 보호를 위해 이름 석자 중 가운데 글자를 O로 바꿔야 한다면? 어려워 보이지만 전혀 어렵지 않은 코딩 몇 줄로 해결할 수 있죠. 또한 영구적으로 변경해 버리는 것이 아니라, 버튼을 생성해 실시간으로 변경을 해제할 수 있습니다. 상황에 맞게 운영할 수 있는 겁니다!

 

2-4) 다른 Office(Ex. MS Access) 와 연동할 수 있다.

 

이 기능은 정말 자동화의 끝판왕이라고 할 수 있습니다. 엑셀에 있는 데이터를 다른 Office에 적절한 형태로, 자동으로 표현할 수 있습니다. 엑셀에 규칙성을 가진 데이터를 정렬해 놓았다면, 이를 파워포인트에 자동으로 구현할 수 있는 겁니다. 그것도 원하는 디자인을 입혀서요! 수작업으로 진행한다면 해내기가 불가능해 보이는 일도 단 몇 초 만에 구현할 수 있는 겁니다. 예를 들어 영단어를 정리해둔 시트를 활용해서 피피티의 각 슬라이드마다 하나의 영단어, 뜻을 원하는 디자인으로 내보이는 거죠!

 

이후에는, EXCEL VBA의 활용에 대해서, 글을 올리도록 하겠습니다. 

 

제 Posting이 조금이나마 정보 전달에 도움이 되셨길 빌며, 되셨다면, 구독, 댓글, 공감 3종 세트 부탁 드립니다. 감사합니다. 

[저작권이나, 권리를 침해한 사항이 있으면 언제든지 Comment 부탁 드립니다. 검토 후 수정 및 삭제 조치 하도록 하겠습니다. 그리고, 기재되는 내용은 개인적으로 습득한 내용이므로, 혹 오류가 발생할 수 있을 가능성이 있으므로, 기재된 내용은 참조용으로만 봐주시길 바랍니다. 게시물에, 오류가 있을때도, Comment 달아 주시면, 검증 결과를 통해, 수정하도록 하겠습니다.]

728x90

댓글