추가 기능 파일이란 무엇인가
추가 기능 파일이란 '추가'라는 단어를 통해 짐작할 수 있는 것처럼 어딘가에 붙어서(add-in) 뭔가 추가적인 기능(functionalities)을 제공하는 파일입니다. '애드인 파일'이라고도 부릅니다. 가장 널리 알려진 추가 기능 파일 중 하나가 엑셀의 '분석 도구'입니다. 이것은 엑셀에 기본적으로 내장 built-in되어 있는 것은 아니지만 통계나 분석 능력 향상을 위해 추가적으로 제공됩니다.
추가 기능 대화상자
애드인 파일(*.xlam)이 일반적인 Excel 매크로 사용 통합 문서(*.xlsm) 파일과 다른 점은 대략 다음과 같습니다.
- ThisWorkbook 오브젝트의 IsAddin 프로퍼티값이 True이다.
- 적어도 하나 이상의 워크시트가 포함되어 있지만 [보기] 탭 - [창] 그룹 - [숨기기 취소] 명령을 통해 숨겨진 시트를 표시할 수 없다.
- 애드인 파일에 있는 프로시저는 [매크로] 대화상자에 나타나지 않는다.
- [추가 기능] 대화상자를 사용하여 설치/제거한다(위 그림).
왜 사용하는가
그렇다면 애드인 파일은 어떤 좋은 점이 있기에 사용하는 것일까요? 이런 것 없이도 지금까지 충분히 잘 살아왔고 앞으로도 그럴 것 같은데 말이지요.
(1) 자신이 만든 파일을 다른 사람에게 배포하거나 할 때 소스 코드나 워크시트의 내용에 접근할 수 없도록 할 수 있습니다.
(2) 다른 파일에서도 쉽게 사용할 수 있습니다. 일반적으로 다른 파일에 있는 함수를 사용하려면 함수의 이름 앞에 다음과 같이 파일의 이름을 함께 적어주어야 합니다.
=Book1.xlsm!FINDFOLDER("C:\MyXls")
하지만 추가 기능 파일이 인스톨 된 상태라면 다음과 같이 간단히 표현할 수 있습니다.
=FINDFOLDER("C:\MyXls")
(3) [추가 기능] 대화상자를 통해 설치/제거가 간단하게 이루어지므로 불필요한 자원의 낭비를 막을 수 있습니다.
(4) 추가 기능 파일로 등록되면 엑셀이 시작될 때 자동으로 실행되므로 사용자는 파일이 어디에 있는지 신경쓸 필요도 없으며, 어느 파일에서든 사용할 수 있습니다.
어떻게 만드는가
기본적으로 VBA가 포함된 파일이라면 어떤 워크북 파일이든 애드인 파일로 전환할 수 있습니다(VBA가 포함되지 않은 파일은 굳이 애드인 파일로 만들 이유는 없겠죠?). 애드인 파일을 만드는 순서는 다음과 같습니다.
(1) 애드인 파일로 변환 convert할 파일을 만듭니다(*.xlsm 형태). 물론 이상 없이 제대로 작동해야겠지요?
(2) [개발 도구] 탭 - [코드] 그룹 - [Visual Basic] 명령을 클릭(또는 Alt + F11키 사용)하여 VB Editor를 실행합니다. VB Editor 왼쪽의 프로젝트 창에서 애드인 파일로 변환할 파일을 선택하고 [도구] - [VBAProject 속성] 메뉴를 선택합니다.
(3) [VBAProject] 대화상자의 [보호] 탭을 선택하고 암호를 지정합니다. 암호 지정은 필수 사항은 아니지만 해 두는 게 좋겠습니다.
(4) [파일] - [복사본 저장] 메뉴를 선택하고 파일 형식을 [Microsoft Office Excel 추가 기능(*.xlam)]으로 지정합니다. 이렇게 하면 원래 파일(*.xlsm)과 별도로 애드인 파일이 생성됩니다.
(5) 원본 파일을 닫고 [파일] - [옵션] 명령을 클릭합니다. [Excel 옵션] 대화상자 왼쪽에 있는 [추가 기능]을 선택하고 [이동] 버튼을 누릅니다.
(6) [추가 기능] 대화상자에서 [찾아보기] 버튼을 클릭하고 앞에서 작성한 추가 기능 파일이 있는 폴더로 가서 파일을 지정합니다.
추가 기능 파일은 아무 폴더에나 저장할 수 있지만 기본값으로 다음 폴더에 저장됩니다.
참고로, [추가 기능] 대화상자에서 [찾아보기] 버튼을 클릭하면 세 가지 확장자를 가진 파일을 추가 기능 파일로 지정할 수 있음을 알 수 있습니다.
- *.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
CODE
이 프로시저를 실행하면 현재 워크시트 뒤에 새로운 워크시트가 하나 삽입되면서 다음과 같은 결과가 나타납니다.
설치되어 있는 추가 기능 파일 리스트
맨 위에 있는 PowerTools.xla 파일을 보니 또 의무감이 생기는군요. 빨랑 버전업해야 하는데 몇 년째 v3.1 버전에 머물고 있네요. 비슷한 시기에 나온 엑셀 2002는 2007로 업그레이드 되었는데 말이지요. (^^;)