추가 기능을 로드하거나 언로드할 때 Excel 2013 이상에서는 추가 기능의 명령 모음이 표시되거나 제거되지 않습니다.

증상

Microsoft Excel 2013 이상에서 추가 기능을 사용하는 경우 다음과 같은 문제가 발생합니다.

문제 1

Excel 추가 기능(xlam) 또는 Excel 97-2003 추가 기능(xla)을 로드하면 추가 기능의 명령 모음이 자동으로 표시되지 않습니다. 대신 모든 통합 문서를 닫은 다음 Excel을 다시 시작하여 명령 모음을 표시해야 합니다.

문제 2

Excel 추가 기능(.xlam) 또는 Excel 97-2003 추가 기능(.xla)을 언로드하거나 명령 모음이 포함된 Excel 매크로 사용 통합 문서(.xlsm)를 닫으면 추가 기능 또는 매크로 사용 통합 문서의 명령 모음이 열려 있는 모든 통합 문서에서 제거되지 않습니다.

원인

이러한 문제는 Excel 2013 이상에서 SDI(단일 문서 인터페이스)로 인해 발생합니다. 레거시 CommandBar 개체를 사용하여 메뉴 항목을 만들면 메뉴 항목이 리본 메뉴의 Add-Ins 탭에 추가됩니다. Excel 2013 이상에서는 각 통합 문서에 고유한 리본이 있습니다. 따라서 통합 문서의 리본을 만든 후 추가 기능을 로드하거나 언로드하면 리본 메뉴가 업데이트되지 않습니다.

다음 코드 샘플에서는 CommandBar 개체를 사용하여 메뉴 항목을 만듭니다.

Application.CommandBars("Worksheet Menu Bar").Controls.Add Type:=msoControlPopup

해결 방법

문제 1을 해결하려면 열려 있는 통합 문서를 모두 닫은 다음 Excel을 다시 시작합니다.

문제 2를 해결하려면 다음 방법 중 하나를 사용합니다.

  • 명령 모음을 추가 기능 또는 매크로 사용 통합 문서의 리본 메뉴(XML) 항목으로 바꿉니다. 리본 메뉴(XML)에 대한 자세한 내용은 리본 XML을 참조하세요.

  • 추가 기능 또는 매크로 사용 통합 문서의 Workbook_BeforeClose 이벤트에서 열려 있는 모든 창을 반복하고 명령 모음을 제거합니다. 다음은 코드 샘플입니다.

    For Each wnd In Application.Windows
            wnd.Activate
            Application.CommandBars("<ToolbarName>").Delete
    Next wnd
    

참고

이 코드에서 자리 표시자 <ToolbarName> 은 명령 모음 이름을 나타냅니다.