VBA나 어떤 프로그래밍 언어를 배우고자 하는 분들에게 해주고 싶은 이야기가 있습니다.

 

바로 누군가로 하여금 배(boat)를 만들게 하고 싶다면 배 만드는 방법을 가르쳐 주지 말고

바다(sea)가 얼마나 멋진가를 가르치라는 이야기입니다.

VBA 언어는 글자이기 때문에 딱딱할 수밖에 없습니다. 언어만 배우다 보면 쉽게 지치기 쉽습니다.

VBA를 이용해서 만든 화면 결과물이 얼마나 멋진가를 가르쳐줘야 합니다.

손으로 일일이 수작업으로 한땀한땀 작업하던 것들이 버튼 한 번에 순식간에 처리되는 모습을 보여줘야 합니다.

그런면에서 엑셀이나 워드보다 비쥬얼적인 도구인 파워포인트가 적합하고 매력적이라고 생각합니다.

 

VBA를 배우고 싶다면 필요한 것은 약간의 코드로 화면에 뭔가를 만들어 내는 것에 신기함과 재미를 느끼면 됩니다.

어떻게 이렇게 만들까 하는 호기심, 이리저리 코드를 바꿔보는 탐구심, 하나 하나 일일이 만들면 되지만 버튼 하나만 누르면 자동으로 만들어 버리고 싶은 게으름, 내가 만든 것이 남에게 요긴하게 쓰일 때 느껴지는 자부심 등도 VBA를 배우게 되는 동기나 원동력이 될 수 있습니다.

 

배가 없으면 바다로 나갈 수 없듯이 일단 간단하게 아무 배나 만들어 보는 것이 출발점이 되겠습니다.

 그런데 Visual Basic 이라는 이름에서 내포하듯이 큰 장벽 없이 쉬운 편이라고 생각합니다. (대신 한계도 있습니다.)

일단 만들고 싶은 기능을 위해 인터넷 검색을 통해 코드를 찾아서 조금씩 변경하다보면 습득하게 됩니다.

제일 먼저 파워포인트라는 '배'의 구조를 알면 좋습니다.

파워포인트에서 VBA 코드는 대개 Application 이나 ActivePresentation 으로 시작합니다.

특히 ActivePresentation 다음에 점(.)을 찍으면 하위 개체나 속성,메소드(기능)가 뜹니다.

파워포인트의 개체구조(일부분)

엑셀은 WorkBook 아래에 Worksheet > Range/Cells >...이런 식으로 구성되는데 파워포인트에서는

현재 프리젠테이션 아래에 Slides 가 들어 있고 그 안에 Shape 도형이 들어 있고 Shape 안에는 여러 속성이 있습니다. TextFrame 도 있고 그 아래에 TextRange 그 아래에 Character, Runs, Paragraph, Font, RGB 등 여러가지가 부모 - 자식 처럼 뿌리로 연결되어 있습니다.

간단한 코드를 만들어 봅시다.

예를 들어 다짜고짜 Alt-F11누르고 삽입>모듈 추가하고 아래 내용을 넣습니다.

 

Sub Test()
    Dim shp As Shape

    Set shp = ActivePresentation.Slides(1).Shapes.AddShape(msoShapeRectangle, 100, 100, 200, 100)
    shp.Fill.ForeColor.RGB = RGB(64, 64, 128)
    shp.TextFrame.TextRange = "Hello, World"
    shp.TextFrame.TextRange.Font.Color.RGB = rgbWhite
End Sub

이렇게 하고 플레이 버튼(녹색 세모)나 F5를 누르거나

슬라이드에서는 Alt-F8>Test 실행 누르면 1슬라이드에 사각형 하나가 추가됩니다.

신기하죠? (작은 것 하나에도 신기해야 합니다!) 이걸 조금씩 고치면서 시작하면 됩니다.

 

ActivePresentation이 현재 프리젠테이션 파일입니다.

Slides 는 모든 슬라이드이고 Slides(1)은 첫번째 슬라이드입니다.

Shapes는 그 슬라이드의 모든 도형입니다. Shapes(1)은 첫번째 도형입니다.

AddShape는 도형을 추가합니다. 사각형, 세모, 원 등을 넣을 수 있습니다. 뒤에 숫자는 좌표입니다.

 

생성된 도형을 shp라는 변수에 담았습니다.

하나의 변수에 도형을 담는 것입니다. 이렇게 shp에 담아놔야 아래에서 shp의 속성을 쉽게 바꿀 수 있습니다.

shp.Fill 은 도형 색깔을 채웁니다. ForColor는 전경색, RGB는 색상코드입니다.

shp.TextFrame 은 도형 안의 텍스트틀을 가리킵니다.

shp.TextFrame.TextRange는 텍스트틀안의 텍스트 범위(전체)입니다.

.Font.Color 는 글자 색, .Font.Name 은 대표폰트 등등...

 

여기서 쉬운 것이 바로 개체변수 shp 다음에 점(.)을 찍으면 하위 명령/속성 목록이 뜨기 때문에 외울 필요가 없습니다. Application. 이렇게 쓰면 하위 개체 목록이 뜹니다. 또한 ActivePresentation. 이렇게 쓰면 하위 개체들이 모두 뜹니다.

 

위 코드를 조금만 바꿔봅시다.

아래처럼 for 문을 추가하면 여러번 반복 실행 가능합니다.

Sub Test()

    Dim shp As Shape
    Dim i as Integer

    For i=1 to 4
        Set shp = ActivePresentation.Slides(1).Shapes.AddShape(msoShapeRectangle, 100 * i, 100 * i , 200, 100)
        shp.Fill.ForeColor.RGB = RGB(64, 64, 128)
        shp.TextFrame.TextRange = "Hello, World " & i
        shp.TextFrame.TextRange.Font.Color.RGB = rgbWhite
    next i
End Sub

이렇게 하면 4개의 사각형이 나타납니다.

 

위 코드를 4를 5로 바꿔보고 1을 2로 바꿔보고

색깔 숫자를 바꿔보고, 텍스트 문구를 바꿔보는 것입니다.

바뀐대로 화면에 나타날 때 '신기함'을 느끼면 여러분은 이제  VBA를 시작하신 것입니다.

나머지는 차근차근 카페 강좌 참고해보세요.

파워포인트게임마을 VBA강좌 게시판:

https://cafe.naver.com/gameppt?iframe_url=%2FArticleList.nhn%3Fsearch.clubid%3D16854404%26search.menuid%3D924

스위트피님의 VBA기초함수 소개:

https://cafe.naver.com/gameppt/129931