안녕하세요 모닝수잔입니다 :) 

 

지난 포스팅에서 비주얼베이직(Visual Basic, 이하 VBA)은 일종의 컴퓨터 언어이고 이를 활용해서 엑셀(Excel) 안에 자동화 프로세스인 매크로(Macro)를 개발한다는 사실을 말씀드렸었는데, 이번에는 비주얼베이직을 활용해서 어떻게 코딩을 하고 매크로를 만들 수 있는지 엑셀의 VBA 편집기를 통해 확인해보겠습니다.

 

 

엑셀을 보시면 Developer(개발도구)라는 탭이 있는데 여기에는 매크로를 직접 기록할 수 있는 Record Macro(매크로 기록) 메뉴도 있지만, 직접 VBA 언어를 입력해서 매크로를 만들 수 있는 Visual Basic(비주얼베지익) 메뉴도 있답니다. 한번 클릭해볼까요?

 

※ 엑셀에 Developer(개발도구) 탭이 없으시다면, File - Option - Customize Ribbon에서 탭을 추가하실 수 있습니다. 자세한 내용은 지난 포스팅을 참고해주세요 :)

 

2020/12/06 - [코딩/Excel Macro(VBA)] - 매크로(Macro)와 비주얼베이직(VBA)의 이해 (feat. 기본설정)

 

 

Visual Basic 메뉴를 클릭하시면, Microsoft Visual Basic for Application(이하 VBA 편집기) 이라는 새로운 창이 뜹니다. 이곳은 코딩을 할 수 있는 코딩창 즉, VBA 언어를 이용해서 매크로를 개발하는 편집기 창이라고 할 수 있습니다. 몇가지 주요 메뉴를 살펴볼까요?

 


엑셀의 구성, Workbook & Sheet

 

먼저, 엑셀의 구성에 대한 간단한 이해가 필요한데요, 엑셀을 처음 만들면 파일명이 뭐라고 되어 있죠? 맞습니다. 바로 Book1, Book2, Book3 ... 이런식으로 Book이라고 되어 있죠? 그리고 각 엑셀 안에는 시트가 있는데 기본적으로 시트를 추가하면 Sheet1, Sheet2, Sheet3 ... 이라는 형식으로 추가됩니다. 즉, 여러개의 Sheet가 모여서 하나의 Workbook을 이룬다는 사실을 알 수 있습니다.

 

 

아래 화면 VBA 편집기왼쪽 빨간칸을 보시면 VBAProject(Book1)이라고 기재되어 있고 그 하위에 Sheet1(sheet1)과 ThisWorkbook이라는 부분이 있습니다. 즉, Book1이라는 이름의 엑셀 파일은 ThisWorkbook이 되는거고, 그 안에 Sheet1이 들어있는거죠. 만약에 Book1 엑셀 파일(Workbook)으로 돌아가서 Sheet2를 하나 추가하면 빨간칸에는 Sheet2(sheet2)도 추가될겁니다.

 

 

 


코딩창, Module

 

그/렇/다/면,

 

Sheet창에서 바로 코딩을 할 수 있느냐? 그건 아닙니다. 바로 Module창이 진정한 코딩을 할 수 있는 코딩창이라고 할 수 있습니다. 처음에 VBA 편집기를 여시면 Module창이 없으실텐데요, Insert - Module을 클릭하시면 아래 화면 빨간칸처럼 새로운 Module창이 추가됩니다. 

 

 

이렇게 추가된 Module창에서는 직접 VBA 를 입력해서 매크로를 만들 수 있습니다. 예를 들면, 엑셀 Sheet1의 이름을 기본 설정값인 Sheet1에서 ▶ 모닝스토리로 바꾸는 과정을 만들어볼까요? 우선 VBA의 기본은 "열고 닫기"라는 점을 기억하고 시작해보겠습니다. 우리가 Module에서 VBA를 사용해서 매크로를 만들려면, 기본이 "열고 닫기"이기니까 무언가 열어야 시작할 수 있겠죠? 그 부분을 바로 Procedure(프로시저)라고 합니다.

 

 

1) 아래 화면 빨간칸처럼 Insert - Procedure를 클릭합니다. Add Procedure창이 새로 생기면 Name에 매크로 이름을 정해서 입력합니다. 저는 test라고 입력해봤습니다. Type에서는 Procedure의 유형을 선택해줘야 하는데, Sub / Function / Property의 3가지 유형 중에서 기본적으로 우리가 사용할 Procedure는 Sub으로 열고 End Sub로 닫는다고 생각해주시면 됩니다. 이제 OK를 클릭합니다.

 

 

 

2) Sub과 End Sub 안에 VBA 언어를 입력해서 매크로 프로세스를 만들어줍니다. 앞서 VBA의 기본을 "열고 닫기"라고 말씀드렸죠? Module창에서 Sub Procedure를 추가하면 아래 화면 빨간칸처럼 자동으로 Sub과 End Sub이 생성됩니다. 이 범위 안에서 자유롭게 VBA 언어를 입력해서 매크로 프로세스를 만들어주면 됩니다. 더불어, 우측 상단을 보시면 Declaration(선언) 부분에 우리가 만들어준 매크로 이름 test가 추가되었음을 확인하실 수 있습니다. 즉, 새로운 test 매크로가 만들어졌다는 뜻이죠.

 

 

 

그/렇/다/면,

 

가장 중요한 Sheet1의 이름을 바꾸는 VBA은 무엇일까요? 매우 간단합니다. sheet1.Name = "모닝스토리" 입니다. 그걸 어떻게 아냐구요? 우리가 지금 변경할 대상이 뭔가요? 바로 sheet1의 이름이죠? 먼저 Sub test() 아래에 sheet1이라고 적고 .을 찍어봅니다. 아래 화면 빨간칸처럼 적용할 수 있는 수많은 방법들이 나타나죠? 여기에서 이름을 바꾸는 것과 가장 연관성이 깊은 방법을 찾아봅니다. 직관적으로 생각했을 때 Name을 적용하면 이름이 바뀔 것 이라고 예상할 수 있어요.

 

※ 사실 VBA의 수많은 방법들을 모두 외울 수는 없기 때문에 그때그때 필요에 따라 구글링해서 찾아보시다보면 자주쓰이는 주요 방법들은 곧 익숙해질 것 이라고 생각됩니다 :)

 

 

개인적으로 생각했을 때, VBA는 상당히 직관적인편이라서 sheet1.Name = "모닝스토리"라고 하면 sheet1 이름을 모닝스토리로 변경한다는 뜻이구나라는게 느껴지실거에요. 특히, 문자열은 큰따옴표 "" 안에 적어주는게 규칙이기 때문에 모닝스토리라는 새로운 시트 이름을 큰따옴표 ""로 감싸줘봤습니다. 이 상태에서 메뉴에 있는 (Run Sub) 버튼을 클릭하시면 아래 화면 왼쪽 빨간칸처럼 Sheet1 이름이 "모닝스토리"로 변경된다는 사실을 확인하실 수 있습니다.

 

 

※ VBA 편집기에서 실행(Run)한 내용이 실제 엑셀에서도 반영되었는지 확인하고 싶으시다면, 아래 2개의 버튼 View Microsoft Excel 또는 View Object 을 클릭하시면 VBA 편집기에서 ▶ 해당 엑셀시트로 화면이 전환된답니다 :)

 

 


직접 실행 창 (Immediate Window) 

 

그/런/데,

 

Module창에서 바로 전문가처럼 VBA를 이용해서 코딩을 할 수 있다면 좋겠지만, 과연 sheet1.Name = "모닝스토리"가 sheet1의 이름을 "모닝스토리"로 변경하는게 맞는건가? 라는 의구심이 들 수가 있겠죠? 그럴 때 간단하게 테스트해볼 수 있는 창이 바로 Immediate Window(직접 실행 창) 입니다.

 

View - Immediate Window를 클릭하시면 아래 화면 빨간칸의 하단처럼 Immediate 창이 생성된답니다. 이곳은 일종의 간단한 테스트 창이라고 생각하시면 됩니다. 예를 들어, sheet1.Name = "모닝스토리"를 하면 정말 sheet1 이름이 "모닝스토리"로 변경될까? 고민될 수 있겠죠? 이때, 매크로를 만들지 않고도 테스트를 해볼 수 있는 곳이 바로 직접 실행 창이랍니다. 직접 실행 창에 sheet1.Name = "모닝스토리"를 적어넣고 Enter를 클릭해도 sheet1 이름이 "모닝스토리"로 변경된다는 사실을 확인하실 수 있답니다. 참 유용하게 쓰일 수 있는 창이죠?

 

 

이렇게 엑셀의 VBA 편집기에서 Sub procedure를 사용해서 직접 VBA 언어로 매크로를 만들 수 있는 과정에 대해서 살펴봤습니다. Record Macro(매크로 기록)을 통해서도 매크로를 만들 수 있지만 좀 더 상세하고 세부적으로 내가 원하는 프로세스를 만들고 싶다면 VBA 편집기를 활용하는 것도 좋겠죠? 향후 포스팅에서는 For, If 등 기본적으로 코딩에서 사용되는 내용들을 VBA를 통해서 살펴보도록하겠습니다. 그럼 오늘도 좋은 하루 되세요 :)

 

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기