Home > VBA 강좌 > VBA 입문강좌

Exceller's VBA 입문강좌

- 최초 작성일 : 2008-11-23
- 최종 수정일 : 2008-11-27
- 강좌 읽음수 : 133,822회
- 자료 작성자 :


- 강좌 제목 : 추가 기능(Add-in) 파일 만들기

들어가기 전에 : 진보와 보수

가장 중요한 가치관을 꼽으라면 대체로 '자유', '평등', '박애(사랑)'의 세 가지를 들곤한다. 이러한 가치들 사이에 충돌이 일어났을 때, 자유를 더 옹호하는 사람들은 시장기능을 중시하는 경향이 있고, 평등과 박애를 더 중요시하는 사람들은 정부 개입을 중시하는 경향이 있다. '보수주의'는 흔히 기존의 것을 고집하는 '수구주의자'라는 오해를 받지만, 경제(학)적인 관점에서 볼 때, 보수주의자들은 시장기능을 중시하는 사람들, 형평성보다는 자유를 더 중요하게 여기는 사람들을 말한다. 반면에 진보주의자들은 정부 개입을 중시하고, 자유보다 형평과 박애를 더 중요하게 여기는 사람들이라 할 수 있다.

진보와 보수의 싸움은 어느 시대나 있게 마련이다. 평등을 지향하는 진보는 경제성장을 희생시키는 비용을 초래하기 십상이다. 자유시장경제의 효율성을 중시하는 보수는 불평등과 양극화를 심화시키는 부작용을 감수할 수 밖에 없다. 그렇다면 국가가 어떤 정책노선을 추구하는 것이 국민의 삶의 질 측면에서 바람직한 것일까.

나는 상대적으로 평등한 사회가 존재할 수 있다고 믿는다. 이를 위해서는 극심한 빈부격차를 제한하는 제도적 장치가 필요하다고 생각한다. 나는 민주주의와 시민의 자유, 그리고 법치를 믿는다. 그래서 나는 진보주의자이며 나는 그것이 자랑스럽다.

<미래를 말하다>, 폴 크루그먼

선진사회(혹은 우리가 바라는 어떤 것이든)는 '자연스럽게 다가오는 것'이 아니라 구성원들의 '의도적인 노력을 통해 만들어 가는 것'임을 깨닫게 된다.

겨울을 재촉하는 비가 내립니다...


예제 파일 내려받기


'추가 기능 파일'이란 무엇인가

추가 기능 파일이란 '추가'라는 단어를 통해 짐작할 수 있는 것처럼, 어딘가에 붙어서(add-in) 뭔가 추가적인 기능(functionalities)을 제공하는 파일이라고 생각하면 되겠고, '애드인 파일'이라고도 부릅니다. 일반적으로, 가장 널리 알려진 추가 기능 파일 중 하나가 엑셀의 '분석 도구'입니다. 이것은 엑셀에 기본적으로 내장(즉 built-in)되어 있는 것은 아니지만 통계나 분석 능력 향상을 위해 추가적으로 제공되는 기능입니다.

애드인 파일(*.xlam)이 일반적인 Excel 매크로 사용 통합 문서(*.xlsm) 파일과 다른 점은 대략 다음과 같습니다.

  • ThisWorkbook 오브젝트의 IsAddin 프로퍼티값이 True이다.

  • 적어도 하나 이상의 워크시트가 포함되어 있지만 '보기' 탭의 '창' 그룹에서 '숨기기 취소' 명령을 통해 숨겨진 시트를 표시할 수 없다.

  • 애드인 파일에 있는 프로시저는 '매크로' 대화상자에 나타나지 않는다.

  • '추가 기능' 대화상자를 사용하여 설치/제거한다.

왜 사용하는가

그렇다면 애드인 파일은 어떤 좋은 점이 있기에 사용하는 것일까요? 이런 것 없이도 지금까지 충분히 잘 살아왔고, 앞으로도 그럴 것 같은데 말이지요.

  • (자신이 만든 파일을 배포하거나 할 때, 암호 설정을 통해)소스 코드나 워크시트의 내용에 접근할 수 없도록 할 수 있습니다.

  • 다른 파일에서도 쉽게 사용할 수 있습니다. 일반적으로 다른 파일에 있는 함수를 사용하려면 함수의 이름 앞에 다음과 같이 파일의 이름을 함께 적어주어야 합니다.

=Book1.xlsm!FINDFOLDER("C:\MyXls")

하지만 추가 기능 파일이 인스톨 된 상태라면 다음과 같이 간단히 표현할 수 있습니다.

=FINDFOLDER("C:\MyXls")

  • '추가 기능' 대화상자를 통해 설치/제거가 간단하게 이루어지므로 불필요한 자원의 낭비를 막을 수 있습니다.

  • 추가 기능 파일로 등록되면 엑셀이 시작될 때 자동으로 실행되므로 사용자는 파일이 어디에 있는지 신경쓸 필요도 없으며, 어느 파일에서든 사용할 수 있습니다.

어떻게 만드는가

기본적으로 VBA가 포함된 파일이라면 어떤 워크북 파일이든 애드인 파일로 전환할 수 있습니다(VBA가 포함되지 않은 파일은 굳이 애드인 파일로 만들 이유는 없겠죠?). 애드인 파일을 만드는 순서는 다음과 같습니다.

1. 애드인 파일로 변환(convert)할 파일을 만듭니다(*.xlsm 형태). 물론 이상없이 제대로 작동해야겠지요?

2. '개발 도구' 탭의 '코드' 그룹에 있는 'Visual Basic'을 클릭(또는 <Alt>+<F11>키를 사용)하여 Visual Basic Editor를 실행시킵니다. VB Editor 왼쪽의 프로젝트 창에서 애드인 파일로 변환할 파일을 선택하고 '도구-VBAProject 속성' 메뉴를 선택합니다.

3. 'VBAProject' 대화상자의 '보호' 탭을 선택하고 암호를 지정합니다(필수 사항은 아님).

4. 워크시트로 되돌아가서 'Office 단추-준비-속성' 메뉴를 클릭합니다. 만든 사람, 제목을 비롯한 7가지 속성을 입력할 수 있도록 문서 속성 창이 펼쳐지는데 여기에다 적당하게 입력합니다. 여기 입력된 사항은 '추가 기능' 대화상자에서 설명문 형태로 표시됩니다.

5. 'Office 단추-다른 이름으로 저장' 메뉴를 클릭하고 파일 형식을 'Microsoft Office Excel 추가 기능(*.xlam)'으로 지정합니다. 이렇게 하면 원래 파일(*.xlsm)과 별도로 애드인 파일이 생성됩니다.

6. 원본 파일을 닫고 'Office 도구-Excel 옵션' 버튼을 클릭합니다. 'Excel 옵션' 대화상자에서 왼쪽에 있는 '추가 기능'을 선택하고 '이동' 버튼을 누릅니다.

7. '추가 기능' 대화상자에서 '찾아보기' 버튼을 클릭하고 앞서 작성한 xlsm 파일이 있는 폴더로 가서 파일을 지정합니다.

추가 기능 파일은 아무 폴더나 지정할 수 있지만 기본값으로 다음 폴더에 저장됩니다.

C:\Documents and Settings\<username>\Application Data\Microsoft\Addins

'추가 기능' 대화상자에서 '찾아보기' 버튼을 클릭하면 세 가지 확장자를 가진 파일을 추가 기능 파일로 지정할 수 있음을 알 수 있습니다.

  • *.xlam: 엑셀 2007 애드인 파일(*.xlsm 파일로부터 생성)

  • *.xla: 엑셀 2007 이전 버전의 애드인 파일(*.xls 파일로부터 생성)

  • *.xll: 컴파일된 독립실행(standalone)형 DLL 파일

추가 기능 파일 수정하기

1. 애드인 파일을 수정하려면, VB Editor 상태에서 해당 프로젝트(즉, 파일)을 더블 클릭하여 해당 파일을 엽니다. 만약 암호 지정이 되어있다면 암호를 입력하여 암호 해제를 해야겠죠.

2. 속성 창에서 'IsAddIn' 속성을 'False'로 변경하고 애드인 파일을 수정합니다.

3. 수정 작업을 마치고 나면 파일을 저장하기 전에 'IsAddIs' 속성을 다시 'True'로 변경합니다. 만약 이 속성을 True로 하지 않고 False로 그대로 남겨두면 어떤 일이 생길까요? 그것은... 직접 한번 해 보시기 바랍니다. ^^

참고로, 현재 PC에 어떤 애드인 파일이 설치되어 있는지 확인해 볼까요? 다음 코드를 복사하여 실행시켜 보시기 바랍니다.

Sub ShowAddInList()

    Dim addList As AddIn
    Dim lngRow As Long
    Dim tblTable As ListObject

    Worksheets.Add after:=ActiveSheet
    Range("A1:D1") = Array("제목", "설명", "상태", "전체 경로")
    lngRow = 2

    For Each addList In AddIns
        With addList
            Cells(lngRow, 1) = .Name
            Cells(lngRow, 2) = .Title
            Cells(lngRow, 3) = .Installed
            Cells(lngRow, 4) = .Path
        End With

        lngRow = lngRow + 1
    Next addList

    ActiveSheet.ListObjects.Add
    ActiveSheet.ListObjects(1).TableStyle = "TableStyleMedium7"
    Cells.EntireColumn.AutoFit

End Sub

이 프로시저를 실행시키면, 현재 워크시트 뒤에 새로운 워크시트가 한장 삽입되면서 다음과 같은 결과가 나타납니다.

맨 위에 있는 PowerTools.xla 파일을 보니 또 의무감이 생기는군요. 빨랑 버전업 돌입해야 하는데... 벌써 몇 년째 v3.1 버전에 머물고 있네요. 비슷한 시기에 나온 엑셀 2002는 벌써 2007로 업그레이드 되었는데 말이지요. ^^;;


Previous

Next

Creative Commons License