엑셀

어디에서나 사용자 정의 함수를 사용할 수 있도록 하기

파란바람이 2020. 5. 10. 14:49

내게 필요한 동작을 하는 함수를 만들어 쓸 수 있다는건 신나는 일입니다.

이렇게 만든 사용자 정의 함수를 현재 파일에서 사용할 뿐만아니라 다른 엑셀 파일에서도 쉽게 사용하는 방법을 소개하겠습니다.

 

 

실습 파일 다운로드

평균값구하기_VBA.xlsm
0.02MB

실습 파일에는 평균성적이라는 이름의 사용자 정의 함수가 있습니다.

 

현재 파일에서 평균성적 함수를 사용하려면 보통 함수 쓰듯이 셀에 이퀄(=)을 입력한 뒤 함수이름인 '평균성적('을 입력하고, 인수를 지정하고 <Enter>키를 누르면 됩니다.

그냥 보통 함수 쓰는 법과 같죠.

 

다른 엑셀 파일에서 이 사용자 정의 함수를 실행하려면 복잡해 집니다.

 

두가지 방법이 있습니다.

 

첫번째는 사용자 정의 함수가 들어 있는 파일이 열려 있을 때 파일 이름까지 포함해 함수를 불러 사용하는 방법입니다.

실습 파일을 미리 열어 두고 [파일]-[새로 만들기]-[새 통합 문서]를 선택합니다.

 

[A1] 셀에 커서를 두고 이퀄(=)을 입력한 뒤 '평균값구하기_VBA.xlsm!평균성적('를 입력합니다.

 

파일명을 입력할 때 대소문자를 구분할 필요는 없지만, 확장자(xlsm)까지 정확하게 적여야 합니다.

 

그런 다음 인수 2개를 입력해야 하는데, 빈 파일이므로 계산할 부분이 없습니다.

평균성적 함수는 꼭 2개 인수를 입력해야 하고, 인수는 셀 주소를 넣어야 합니다.

적당히 첫번째 인수는 [B3] 셀을 선택하고, 두번째 인수는 [D3:F3] 셀 범위를 선택합니다.

닫는 괄호를 입력해도 되고, 입력하지 않고 <Enter>키를 누르면 자동으로 입력하고 함수 결과를 알려줍니다.

입력한 인수가 빈 값이라 결과로 0이 나오면 됩니다.

사용자 정의 함수 평균성적이 제대로 실행되지 않는다면 '#NAME?' 오류 메시지가 나타납니다.

평균성적이란 함수를 찾을 수 없다는 메시지입니다.

 

두번째 방법은 VBE를 실행해 사용자 정의 함수 모듈을 현재 파일로 복사해 사용하는 겁니다.

이 방법은 첫번째 방법보다 더 불편한데, 평균성적 함수를 사용할 모든 엑셀 파일에 함수 모듈을 복사해서 써야 한다는 이유 때문입니다.

또 파일을 저장할 때 모두 Excel 매크로 사용 통합 문서로 저장해야 한다는 점도 불편합니다.

만든 사용자 정의 함수를 바꿀 일이 있을 때 함수 모듈을 복사한 모든 엑셀 파일을 열어 일일이 수정해야만 한다는 점도 곤란한 부분입니다.


첫번째와 두번째 방법 모두 마음에 들지 않기 때문에 새로운 방법을 소개합니다.

이게 이 강좌의 본론입니다.

 

사용자 정의 함수가 들어있는 엑셀 파일을 직접 미리 열어둘 필요없고, 사용자 정의 함수를 사용하고 싶은 모든 엑셀 파일에 함수 모듈을 복사해 쓸 필요도 없는 방법은 Excel 추가 기능으로 등록하는 방법입니다.

 

빈 엑셀 파일에 사용자 정의 함수 모듈을 복사하고, 그 파일을 Excel 추가 기능으로 등록하겠습니다.

 

사용자 정의 함수 모듈이 있는 평균값구하기_VBA.xlsm 파일을 선택합니다.

이미 실행되어 있는 상태죠?

그리고 빈 엑셀 파일이 하나 열려 있죠.

이 파일에 사용자 정의 함수 모듈을 복사할 겁니다.

만약 열려 있는 빈 엑셀 파일이 없으면 [파일]-[새로 만들기]-[새 통합 문서]를 선택해 새로 여세요.

 

<Alt + F11>키를 눌러 VBE를 실행합니다.

왼쪽 프로젝트 탐색창에서 Module1을 선택하고, 마우스 오른쪽 클릭한 뒤 [파일 내보내기]를 선택합니다.

적당한 폴더에 적당한 파일 이름으로 저장하세요.

곧 바로 가져오기할 예정이라 저장 위치나 파일 이름은 중요하지 않습니다.

VBE 프로젝트 탐색창에 VBAProject (통합 문서2)를 마우스 왼쪽을 눌러 선택한 뒤, 다시 마우스 오른쪽 누르고 [파일 가져오기]를 선택합니다. 

아까 내보내기 했던 모듈 파일을 선택합니다.

따로 파일 이름을 지정하지 않았다면 Module1.bas 파일입니다.

매크로 모듈을 다른 엑셀 파일로 복사하는 방법입니다.

 

이제 VBE를 닫고 엑셀로 돌아갑니다.

<Alt + F11>을 눌러도 됩니다.

 

열려 있는 통합 문서2 파일로 갑니다.

 

[A1] 셀에 아까 연습한 평균성적 함수가 있네요.

필요 없으니 지우세요.

 

이제 추가 기능으로 저장합니다.

[파일]-[다른 이름으로 저장]-[찾아보기] 단추를 누릅니다.

[파일 형식]에서 [Excel 추가 기능(*.xlam)]을 선택합니다.

파일 형식을 선택하는 순간 위쪽 저장위치가 특별한 경로로 바뀝니다.

C:\Users\[사용자이름]\AppData\Roaming\Microsoft\AddIns

이 폴더에 저장되어야 엑셀 추가 기능으로 바로 찾을 수 있습니다.

[사용자이름] 부분은 각 컴퓨터마다 다르게 나타날 수 있습니다.

 

파일 이름은 알기 쉽도록 사용자지정함수라고 입력합니다.

[저장] 단추를 누르면 다시 통합 문서2 파일이 나타납니다.

 

[개발 도구]-[추가 기능]-[Excel 추가 기능]을 선택합니다.

 

혹시 [개발 도구] 탭이 표시되지 않는다면 [파일]-[옵션]-[추가 기능]에서 아래 [관리] 항목에서 Excel 추가 기능을 선택하고 [이동] 단추를 누릅니다.

[찾아보기] 단추를 누릅니다.

아까 추가 기능으로 저장했던 사용자지정함수.xlam 파일을 선택하고 [확인] 단추를 누릅니다.

[추가 기능] 대화 상자에 사용자지정함수 목록이 보이고 선택되어 있습니다.

[확인] 단추를 누릅니다.

모든 설정 작업을 끝났습니다.

 

실행되어 있는 모든 엑셀 창을 닫고 새 엑셀 통합문서를 실행해 사용자 정의 함수 평균성적이 동작하는지 확인해 봅니다.

새로운 사용자 정의 함수를 만들었다면 같은 파일에 추가해 넣을 수 있습니다.