Skip to main content

Excel의 모든 워크북에서 VBA 매크로를 저장하고 사용하는 방법은 무엇입니까?

Author: Zhoumandy Last Modified: 2025-08-06

반복적인 계산 자동화, 데이터 서식 지정 또는 숫자를 단어로 변환하는 것과 같은 사용자 정의 기능과 같은 작업에 대해 다른 Excel 워크북에서 동일한 VBA 매크로를 반복적으로 사용해야 하는 많은 상황이 있습니다. 일반적인 문제는 기본적으로 매크로가 생성된 워크북 내에만 저장된다는 것이며, 이는 새 문서에서 쉽게 접근하거나 재사용할 수 없다는 것을 의미합니다. 그러나 Excel에서는 새로운 워크북을 시작할 때마다 코드를 다시 복사할 필요 없이 VBA 매크로를 전역적으로 사용할 수 있도록 여러 가지 유연한 방법을 제공합니다. 이 튜토리얼에서는 다양한 접근 방식에 대한 포괄적인 지침을 제공하여 모든 워크북에서 VBA 매크로를 쉽게 접근할 수 있도록 하고 생산성과 워크플로우를 개선합니다.

A screenshot showing the Add-ins dialog in Excel

모든 워크북에서 VBA 코드 저장 및 사용
개인용 매크로 워크북 방법


모든 워크북에서 VBA 코드 저장 및 사용

예를 들어, 사용자 정의 VBA 코드를 사용하여 숫자를 영어 단어로 변환하고, 어느 워크북에서 작업하든지 이 기능을 항상 사용할 수 있도록 하고 싶다고 가정해 보겠습니다. 적절한 접근 방식을 사용하면 언제든지 Excel에서 필요할 때 VBA 모듈을 재사용할 수 있도록 저장할 수 있습니다. 특히 여러 파일에 코드를 복제하지 않고도 매번 접근 가능한 사용자 정의 함수나 자동화에 매우 유용합니다.

이를 위해 VBA 코드를 사용자 정의 Excel 추가 기능으로 패키지할 수 있습니다. 이 추가 기능은 Excel에서 활성화할 수 있으며, 사용자 정의 기능을 전역적으로 사용 가능한 함수로 노출시킵니다.

다음 단계를 따르세요:

1. Excel에서 Alt + F11을 눌러 "Microsoft Visual Basic for Applications" 창을 엽니다.

2. VBA 편집기에서 삽입 > 모듈을 클릭하고 새로 생성된 모듈 창에 다음 매크로를 붙여넣습니다.

VBA 코드: 숫자를 단어로 변환

Function NumberstoWords(ByVal MyNumber)
'Update by ExtendofficeDim xStr As StringDim xFNum As IntegerDim xStrPointDim xStrNumberDim xPoint As StringDim xNumber As StringDim xP() As VariantDim xDPDim xCnt As IntegerDim xResult, xT As StringDim xLen As IntegerOn Error Resume NextxP = Array("", "Thousand ", "Million ", "Billion ", "Trillion ", " ", " ", " ", " ")
xNumber = Trim(Str(MyNumber))
xDP = InStr(xNumber, ".")
xPoint = ""
xStrNumber = ""
If xDP >0 ThenxPoint = " point "
xStr = Mid(xNumber, xDP +1)
xStrPoint = Left(xStr, Len(xNumber) - xDP)
For xFNum =1 To Len(xStrPoint)
xStr = Mid(xStrPoint, xFNum,1)
xPoint = xPoint & GetDigits(xStr) & " "
Next xFNumxNumber = Trim(Left(xNumber, xDP -1))
End IfxCnt =0xResult = ""
xT = ""
xLen =0xLen = Int(Len(Str(xNumber)) /3)
If (Len(Str(xNumber)) Mod3) =0 Then xLen = xLen -1Do While xNumber <> ""
If xLen = xCnt ThenxT = GetHundredsDigits(Right(xNumber,3), False)
ElseIf xCnt =0 ThenxT = GetHundredsDigits(Right(xNumber,3), True)
ElsexT = GetHundredsDigits(Right(xNumber,3), False)
End IfEnd IfIf xT <> "" ThenxResult = xT & xP(xCnt) & xResultEnd IfIf Len(xNumber) >3 ThenxNumber = Left(xNumber, Len(xNumber) -3)
ElsexNumber = ""
End IfxCnt = xCnt +1LoopxResult = xResult & xPointNumberstoWords = xResultEnd FunctionFunction GetHundredsDigits(xHDgt, xB As Boolean)
Dim xRStr As StringDim xStrNum As StringDim xStr As StringDim xI As IntegerDim xBB As BooleanxStrNum = xHDgtxRStr = ""
On Error Resume NextxBB = TrueIf Val(xStrNum) =0 Then Exit FunctionxStrNum = Right("000" & xStrNum,3)
xStr = Mid(xStrNum,1,1)
If xStr <> "0" ThenxRStr = GetDigits(Mid(xStrNum,1,1)) & "Hundred "
ElseIf xB ThenxRStr = "and "
xBB = FalseElsexRStr = " "
xBB = FalseEnd IfEnd IfIf Mid(xStrNum,2,2) <> "00" ThenxRStr = xRStr & GetTenDigits(Mid(xStrNum,2,2), xBB)
End IfGetHundredsDigits = xRStrEnd FunctionFunction GetTenDigits(xTDgt, xB As Boolean)
Dim xStr As StringDim xI As IntegerDim xArr_1() As VariantDim xArr_2() As VariantDim xT As BooleanxArr_1 = Array("Ten ", "Eleven ", "Twelve ", "Thirteen ", "Fourteen ", "Fifteen ", "Sixteen ", "Seventeen ", "Eighteen ", "Nineteen ")
xArr_2 = Array("", "", "Twenty ", "Thirty ", "Forty ", "Fifty ", "Sixty ", "Seventy ", "Eighty ", "Ninety ")
xStr = ""
xT = TrueOn Error Resume NextIf Val(Left(xTDgt,1)) =1 ThenxI = Val(Right(xTDgt,1))
If xB Then xStr = "and "
xStr = xStr & xArr_1(xI)
ElsexI = Val(Left(xTDgt,1))
If Val(Left(xTDgt,1)) >1 ThenIf xB Then xStr = "and "
xStr = xStr & xArr_2(Val(Left(xTDgt,1)))
xT = FalseEnd IfIf xStr = "" ThenIf xB ThenxStr = "and "
End IfEnd IfIf Right(xTDgt,1) <> "0" ThenxStr = xStr & GetDigits(Right(xTDgt,1))
End IfEnd IfGetTenDigits = xStrEnd FunctionFunction GetDigits(xDgt)
Dim xStr As StringDim xArr_1() As VariantxArr_1 = Array("Zero ", "One ", "Two ", "Three ", "Four ", "Five ", "Six ", "Seven ", "Eight ", "Nine ")
xStr = ""
On Error Resume NextxStr = xArr_1(Val(xDgt))
GetDigits = xStrEnd Function

3. 이제 창 왼쪽 상단에 있는 "저장" 아이콘을 클릭하거나 간단히 Ctrl + S 를 눌러 "다른 이름으로 저장" 대화상자를 엽니다.
A screenshot showing the Save option in the VBA window

4. "다른 이름으로 저장" 창에서 "파일 이름" 필드에 원하는 파일 이름을 입력합니다. "저장 형식" 드롭다운 메뉴에서 반드시 Excel 추가 기능 (*.xlam).
A screenshot showing the Save As dialog box with the selection of Excel Add-in (*.xlam) as the save type

5. "저장" 버튼을 클릭하여 워크북을 Excel 추가 기능 파일로 저장합니다. 이렇게 하면 언제든지 어떤 워크북에서도 활성화할 수 있는 재사용 가능한 추가 기능이 생성됩니다.
A screenshot showing the workbook saved as an Excel Add-in

6. 저장이 완료되면 Excel로 돌아가서 방금 추가 기능으로 변환한 워크북을 닫습니다.

7. 매크로를 사용하려는 새 워크북이나 기존 워크북을 엽니다. 적절한 셀 (예: B2)에 사용자 정의 공식을 입력하세요:

=NumberstoWords(A2)
참고: 이 시점에서 "#NAME?" 오류가 나타날 수 있습니다. 이것은 예상되는 결과이며, 매크로 기능이 포함된 추가 기능이 전역적으로 Excel에 로드되지 않았기 때문입니다. 아래 단계를 따라 모든 워크북에서 매크로를 활성화하세요.
A screenshot of the #NAME? error before applying the saved VBA macro

8. 개발 도구 탭으로 이동하여 Excel 추가 기능 버튼을 클릭하세요.
A screenshot showing the Add-ins option under the Developer tab in Excel

9. 나타나는 추가 기능 대화상자에서 찾아보기.
A screenshot of the Add-ins dialog box in Excel

10. 이전에 저장한 추가 기능 파일을 찾아 선택한 후 확인.
A screenshot showing the selection of a custom Add-in file in Excel

11. "숫자를 단어로 변환 추가 기능"과 같은 사용자 정의 추가 기능이 이제 추가 기능 목록에 나타납니다. 확인란을 체크하고 확인 을 클릭하여 활성화합니다.
A screenshot showing the custom add-in the Add-ins dialog box in Excel

12. 이제 대상 셀 (예: B2)에 사용자 정의 함수를 다시 입력하고 Enter를 누릅니다. 그러면 수식이 숫자에 해당하는 올바른 영어 단어를 반환해야 합니다.

=NumberstoWords(A2)

13. 여러 숫자에 변환 공식을 빠르게 적용하려면 셀의 자동 채우기 핸들을 아래로 드래그하여 다른 셀에 함수를 복사합니다.

A screenshot showing the final result of the converted numbers to words

팁 & 참고 사항:

  • 매크로를 추가 기능으로 저장하면 모든 워크북에서 동일한 사용자 정의 함수, 코드 또는 자동화를 사용할 수 있어 시간을 절약하고 일관성을 개선할 수 있습니다.
  • Excel이 종료되었거나 추가 기능이 나중에 비활성화된 경우, 추가 기능의 기능이 임시로 "#NAME?"로 표시될 수 있습니다. 혼란을 피하기 위해 필요한 경우 추가 기능 관리자에서 추가 기능이 항상 활성화되어 있는지 확인하세요.
  • 일부 사용자는 기본적으로 개발 도구 탭을 보지 못할 수 있습니다. 이를 활성화하려면 리본을 마우스 오른쪽 버튼으로 클릭하고 "리본 사용자 정의"를 선택한 다음 "개발 도구" 옵션을 체크하세요.
  • 추가 기능을 영구 폴더에 저장하는 것이 좋습니다. 파일이 이동되거나 이름이 변경되어 참조가 누락되지 않도록 하기 위함입니다.

코드를 수동으로 실행하는 것을 선호한다면, 디버깅 중이거나 임시 사용에 유용할 때도 가능합니다:

  1. 빠른 실행 도구 모음에 매크로를 할당하여 모든 보이는 워크북에서 한 번의 클릭으로 실행할 수 있습니다. 이렇게 하려면 빠른 실행 도구 모음을 마우스 오른쪽 버튼으로 클릭하고 "빠른 실행 도구 모음 사용자 정의"를 선택한 다음 매크로를 추가하세요.
    A screenshot showing how to add the VBA macro to the Quick Access Toolbar
  2. 또는 Alt + F11을 눌러 VBA 편집기를 열고, 수동으로 매크로를 선택한 다음 F5를 눌러 필요한 경우 코드를 실행할 수 있습니다.

장점: 이 솔루션을 통해 추가 기능이 활성화된 한 항상 작동하는 풍부하고 재사용 가능한 매크로 기능을 만들고 공유할 수 있습니다.
단점: 사용자는 추가 기능을 로드해야 하며, 워크북을 공유할 경우 추가 기능 파일과 기능 세부 정보도 함께 공유해야 합니다. 또한 Excel Online에서는 추가 기능을 사용할 수 없습니다.


개인용 매크로 워크북 방법

특정 워크북이 열려 있던 아니던 모든 Excel 세션에서 자주 사용하는 매크로를 준비할 수 있는 또 다른 매우 실용적인 방법은 개인용 매크로 워크북(PERSONAL.XLSB)을 사용하는 것입니다. 이는 특별한 숨겨진 Excel 파일로, Excel이 시작될 때마다 자동으로 로드되어 내부에 저장된 모든 매크로가 열려 있는 모든 워크북에서 접근 가능하게 만듭니다.

적용 시나리오: 공식 Excel 추가 기능으로 공유할 필요가 없는 개인 자동화, 일상적인 서식 스크립트 또는 유틸리티 함수에 이상적입니다. PERSONAL.XLSB의 매크로는 컴퓨터에 열려 있는 파일에 관계없이 사용 가능합니다.

장점: 매크로는 로컬 Excel 프로필에서 전역적으로 사용 가능하며 추가 기능 설치와 추가 파일이 필요하지 않습니다.
단점: 이렇게 저장된 매크로는 PERSONAL.XLSB가 존재하는 컴퓨터와 계정에서만 사용할 수 있습니다. 다른 사람과 공유하려면 모듈을 수동으로 내보내고 가져와야 합니다.

  • 이 방법을 사용하려면 먼저 매크로를 녹화하거나 생성하고, 개인용 매크로 워크북에 저장되도록 해야 합니다.

다음 단계를 따르세요:

  1. Excel을 열고 보기 탭에서 매크로를 클릭한 다음 매크로 녹화를 선택하세요.
  2. 대화상자에서 "매크로 저장 위치"에서 개인용 매크로 워크북을 선택합니다. 녹화를 완료하세요(필요 없으면 즉시 중지할 수 있습니다).
  3. Alt + F11을 눌러 VBA 편집기에 들어갑니다. 여기에서 PERSONAL.XLSB 프로젝트를 볼 수 있습니다. 여기에 새 모듈을 삽입하거나 원하는 매크로 코드를 붙여넣으세요.
  4. 변경 내용을 저장하세요. Excel은 자동으로 시작 폴더에 PERSONAL.XLSB 워크북을 생성하고 유지합니다.
  5. PERSONAL.XLSB의 매크로는 매크로 대화상자(Alt + F8)를 통해 실행하거나 리본 또는 도구 모음 버튼에 할당하거나 VBA에서 호출할 수 있습니다.

문제 해결 & 유지 관리: PERSONAL.XLSB의 매크로가 사용할 수 없는 경우, Excel이 안전 모드에서 열렸는지 또는 매크로 보안 설정이 "모든 매크로 비활성화"로 설정되었는지 확인하세요. 또한 PERSONAL.XLSB는 기본적으로 숨겨져 있습니다. 실수로 저장하지 않고 닫거나 삭제한 경우, 매크로를 다시 녹화하여 재생성해야 할 수 있습니다.

팁: PERSONAL.XLSB 파일을 정기적으로 백업하세요. 시스템 프로필 폴더에서 찾을 수 있으며, 일반적으로는 다음과 같습니다:
C:\Users\[YourUserName]\AppData\Roaming\Microsoft\Excel\XLSTART\PERSONAL.XLSB

기타 작업 (기사)

Excel에서 모든 추가 기능을 나열하는 VBA 코드
Excel에서는 데이터 처리를 더 잘 수행하기 위해 일부 추가 기능을 추가하거나 삽입할 수 있습니다. 우리는 옵션 창에서 모든 추가 기능을 볼 수 있다는 것을 알고 있지만, 모든 추가 기능을 한 장에서 나열하는 방법이 있을까요? 이 튜토리얼에서는 Excel에서 모든 추가 기능을 나열하는 VBA 코드를 제공합니다.

워크북을 열거나 닫을 때 VBA 매크로를 실행하는 방법은 무엇입니까?
이 글에서는 매번 워크북을 열거나 닫을 때 VBA 코드를 실행하는 방법에 대해 설명하겠습니다.

Excel에서 VBA 코드를 어떻게 보호/잠글 수 있습니까?
워크북과 워크시트를 암호로 보호할 수 있는 것처럼, Excel에서 매크로를 보호하기 위한 암호를 설정할 수도 있습니다.

Excel에서 VBA 매크로를 실행한 후 시간 지연을 사용하는 방법은 무엇입니까?
몇몇 경우, Excel에서 VBA 매크로를 트리거하기 위해 타이머 지연이 필요할 수 있습니다. 예를 들어, 특정 매크로를 실행하도록 클릭하면 10초 후에 효과가 발생합니다. 이 기사는 이를 달성하는 방법을 보여줍니다.

최고의 오피스 생산성 도구

🤖 Kutools AI Aide: 지능형 실행을 기반으로 데이터 분석 혁신 지능형 실행   |  코드 생성  |  사용자 정의 수식 생성  |  데이터 분석 및 차트 생성  |  Kutools Functions 호출
인기 기능: 중복 찾기, 강조 또는 중복 표시  |  빈 행 삭제  |  데이터 손실 없이 열 또는 셀 병합  |  반올림...
슈퍼 LOOKUP: 다중 조건 VLookup    다중 값 VLookup  |   다중 시트 조회   |   퍼지 매치 ....
고급 드롭다운 목록: 드롭다운 목록 신속 생성  |  의존형 드롭다운 목록  |  다중 선택 드롭다운 목록....
열 매니저: 지정 개수 열 추가  |  열 이동  |  숨겨진 열 표시 상태 전환 |  범위 및 열 비교 ...
주요 기능: 그리드 포커스  |  디자인 보기  |  향상된 수식 표시줄   통합 문서 & 시트 관리   |  자동 텍스트 라이브러리   |  날짜 선택기   |  데이터 병합   |  셀 암호화/해독   목록별 이메일 보내기  |  슈퍼 필터  |  특수 필터 (굵게/이탤릭/취소선 필터...)...
Top15 도구 세트12개 텍스트 도구(텍스트 추가, 특정 문자 삭제, ...)  |  50+ 차트 유형(간트 차트, ...)  |  40+ 실용 수식(생일을 기반으로 나이 계산, ...)  |  19개 삽입 도구(QR 코드 삽입, 경로에서 그림 삽입, ...)  |  12개 변환 도구(단어로 변환하기, 통화 변환, ...)  |  7개 병합 & 분할 도구(고급 행 병합, 셀 분할, ...)  |  ... 그리고 그 외
Kutools를 원하는 언어로 사용하세요 – 영어, 스페인어, 독일어, 프랑스어, 중국어 등40가지 이상의 언어를 지원합니다!

Kutools for Excel로 Excel 실력을 한 단계 업그레이드하고, 그 어떤 때보다 뛰어난 효율성을 경험하세요. Kutools for Excel은300개 이상의 고급 기능을 제공하여 생산성을 높이고 저장 시간을 줄여줍니다. 가장 필요한 기능을 지금 바로 확인하세요...


Office Tab이 오피스에 탭 인터페이스를 제공하여 작업을 훨씬 쉽게 만듭니다

  • Word, Excel, PowerPoint에서 탭 기반 편집과 읽기를 활성화합니다.
  • 여러 문서를 새 창이 아닌 동일한 창의 새 탭에서 열고 생성하세요.
  • 생산성이50% 향상되며, 매일 수백 번의 마우스 클릭을 줄일 수 있습니다!