[[분류:BASIC]][[분류:Microsoft]][[분류:컴퓨터활용능력]] [include(틀:다른 뜻1, other1=GBA 에뮬레이터, rd1=VisualBoyAdvance)] [include(틀:다른 뜻1, other1=일본의 연예기획사 LDH에서 주최하는 오디션인 VOCAL BATTLE AUDITION, rd1=EXILE TRIBE)] [include(틀:Microsoft)] [include(틀:프로그래밍 언어)] [[파일:vba-실행-화면.png|width=500]] [[파일:Visual Basic for Applications 로고.svg|align=right&width=500]] [목차] == 개요 == [[Microsoft Office]]에 내장돼 있는 프로그래밍 언어. 주 용도는 [[매크로]]를 돌리고 사용자 정의 함수를 사용하는 것. 마이크로소프트의 [[비주얼 베이직]] 6.0에서 시작된 언어로, 문법이 같다는 것을 보면 쉽게 알 수 있다. 6.0에서 만들어졌기 때문에 [[Visual Basic .NET]]에는 호환되지 않는다. 마이크로소프트가 .NET으로 넘어가라고 권장하고 있는데도 아직도 6.0이 생명력을 유지하는 이유도 이 때문이다. [[컴퓨터활용능력/1급]]의 최종 보스. == 사용 프로그램 == 주로 [[Microsoft Excel]]에서 많이 사용되기 때문에 엑셀 전용으로 오해를 많이 받는다. 하지만 [[Microsoft Access|액세스]], [[Microsoft Word|워드]] 등의 응용 프로그램에서도 사용할 수 있다. 워드는 매크로 기능을 사용할 일이 없고, 파워포인트는 [[파워포인트 아트]]를 하는 사람만 사용하고, 액세스는 기본 기능부터가 강력한 탓에 굳이 VBA를 쓸 필요가 거의 없기 때문에 이러한 인식이 생기게 됐다고 볼 수 있다. === [[Microsoft Access]] === 원래 VBA는 액세스를 위해 만들어졌다. [[데이터베이스]] 프로그램인 액세스를 떠받치는 [[SQL]] 구문이 바로 프로시저이기 때문이다. 그래서 액세스에서는 프로시저 [[프로그래밍]]을 열심히 해야 한다. [[컴퓨터활용능력]] 1급의 꽃이다. 액세스 분야에서는 전체 점수의 45점이 프로시저 작성과 관련이 있으므로 이걸 못하면 탈락 가능성이 매우 높다.[* 액셀에서 배열수식이 주적이라면 액세스에서는 VBA가 주적에 가깝다. 사실 구문의 난이도가 특별히 높은 건 아니지만 &과 “,’의 사용이 까다롭기 때문이다.] === [[Microsoft Excel]] === 엑셀은 분명 문서작성용이지만 한국에서는 다양한 일로 굴려지고 있다. 특히, [[하라는 공부는 안하고|쓰라는 액세스는 안 쓰고]] 엑셀로 데이터베이스를 관리하는 경우가 왕왕 있는데 VBA는 이런 일을 가능하게 하도록 돕는 역할을 한다. 혹은 수식을 사용해서 해결하기 어려운 문제를 한 번에 해결해주는 해결사 역할을 맡기도 한다. UDF(User defined function)등의 사용자 정의 함수를 만들어 낼 수도 있다. 기능경시대회(정보기술)에서 이 VBA의 많은 부분을 활용하여 과제를 푼다. 컴퓨터활용능력 1급에서 VBA 프로시저 작성이 25점을 차지한다. 한국에서 액셀을 [[데이터베이스]]용 프로그램으로 쓰는 몹쓸 기업들이 많다 보니 [[대한상공회의소]]에서도 현실반영을 한 셈이다. 이거 못 하면 낙방할 가능성이 높다.[* 사람에 따라 계산작업 문제보다는 VBA를 더 쉽게 느낄 수도 있다.] === [[Microsoft PowerPoint]] === 쓰는 곳이 거의 매크로밖에 없다시피 하고 그 매크로마저도 쓸 일이 거의 없는 파워포인트에서도 쓰는 사람이 있는데, 다름아닌 게임 제작용이다. VBA의 기능이 워낙 강력한터라 충분히 UI 제작도 가능해서 게임, OS 시뮬레이터 등등 다양한 방면으로 굴려지고 있다. 자세한 내용은 [[파워포인트 아트]] 문서를 참조. 굳이 사용처를 찾자면, 숨기기한 슬라이드가 있을 때, 당연히 숨기지 않은 슬라이드의 슬라이드 번호가 건너뛰어지게 된다. 예를 들어 1, 2, 3, 4, 5 다섯장의 슬라이드가 있을 때, 3번 슬라이드를 숨기기하면 슬라이드쇼 또는 인쇄한 슬라이드에는 1, 2, 4, 5의 순으로 번호가 매겨진다. 그러나 VBA를 이용하여 코딩을 해주면, 이런 경우에도 번호가 1, 2, 3, 4 순으로 나오게 할 수 있다. == 문제점 == 앞서 말한 '매크로용이라고 보기 힘들 정도의 강력함'으로 인한 문제 또한 있다. 흔히 매크로 바이러스라고 부르는 존재가 바로 VBA로 만든 바이러스이다. VBA를 구동하기 위해서 윈도의 다양한 라이브러리를 참조할 수 있게 해놨기 때문에 역으로 보안성이 취약해진 것이다. 덕분에 최신 MS 오피스로 넘어올수록 점차 VBA가 자동으로 돌아가는 것을 막기 위해서 봉인하고 있다. 2003 버전은 기본 설정을 비활성화로 해두어 별도로 실행하게 하였고, 2007부터는 포맷을 대격변하면서 VBA를 별도의 파일(*.xlsm, *.pptm, *.ppsm 등)로 분리시켜놓았다. 2019년 Stack Overflow 개발자 설문조사 [[https://insights.stackoverflow.com/survey/2020#technology-most-loved-dreaded-and-wanted-platforms-dreaded5|결과]] 건드리기 무서운(Dreadful Language) 언어로 꼽혔다. 2위는 [[Objective-C]]. 이와 관련하여 VBA가 까이는 이유를 언어 자체보다 VBA 코드 개발창의 구식을 문제삼기도 했다. [[https://rubberduckvba.wordpress.com/2019/04/10/whats-wrong-with-vba/|링크]] --비주얼 스튜디오가 그리워진다-- == 기타 == VBA를 이용해서 단순한 반복 작업을 하는 것에 만족하지 않고 잉여력(?)을 발휘하여, 게임 등을 만드는 시도가 있다. (아래는 그 사이트들 중 일부) * 국내 * 리비르 [[https://blog.naver.com/ribir/222530622870]] * 가속 [[https://blog.naver.com/2020xodn/221759242744]] * 파워포인트게임마을[[https://cafe.naver.com/gameppt/106018]] * 해외 * VITOSH ACADEMY[[https://www.vitoshacademy.com/vba-puzzle-game-in-excel/]] * EXCEL VBA GAMES [[http://excelvbagames.wikidot.com/]]