엑셀 / VBA / 모듈 내보내기 가져오기
엑셀의 VBA 표준 모듈은 Visual Basic 편집기의 [파일 내보내기]로 .bas 파일에 저장하고 다른 프로젝트에서 [파일 가져오기]로 추가할 수 있습니다. 코드 재사용에 편리하지만 통합 문서 전체를 복사하는 기능은 아닙니다. 시트 이름과 다른 모듈·라이브러리에 대한 의존성은 따로 확인해야 합니다.
메뉴 경로와 단축키는 Windows용 데스크톱 Excel 기준입니다. 버전과 리본 메뉴 구성에 따라 이름·위치가 다를 수 있습니다.
내보내기 전에 확인할 내용
원본과 대상 파일을 복사해 보관하고 내보낼 코드에 비밀번호·개인정보가 없는지 확인합니다. 표준 모듈에는 일반 Sub·Function 등을 넣을 수 있으며 시트나 ThisWorkbook의 이벤트 코드와는 용도가 다릅니다.
이 글은 표준 모듈의 .bas 파일을 기준으로 설명합니다. 클래스 모듈과 사용자 폼은 다른 종류의 구성 요소이며 사용자 폼은 관련 파일이 함께 필요할 수 있습니다. 여러 구성 요소가 서로 호출된다면 하나의 모듈만 옮겨서는 정상 동작하지 않을 수 있습니다.
기능과 적용 제품은 Microsoft의 VBA 파일 가져오기·내보내기 설명, Microsoft의 매크로 보안 설정 안내에서 확인할 수 있습니다.
표준 모듈 내보내기
- 원본 파일을 열고 Alt+F11로 편집기를 엽니다. 프로젝트 탐색기에서 해당 파일의 [모듈] 아래에 있는 모듈을 오른쪽 버튼으로 누르고 [파일 내보내기]를 선택하여 .bas 파일을 저장합니다.
내보낸 파일은 텍스트 편집기로 코드 내용을 확인할 수 있습니다. 원본을 바로 수정해 덮어쓰기보다 별도 사본에서 관리하세요. 내보내기는 원래 프로젝트의 모듈을 삭제하는 작업이 아닙니다.
파일 이름을 날짜나 기능과 함께 관리하면 어느 버전의 코드인지 구분하기 쉽습니다. 다만 .bas 파일에는 셀 데이터·통합 문서 설정·모든 프로젝트 구성 요소가 담기지 않으므로 원래 .xlsm 파일도 별도로 보관합니다.
다른 통합 문서로 가져오기
- 대상 파일의 프로젝트를 선택한 뒤 [파일] → [파일 가져오기]에서 저장한 .bas 파일을 선택합니다. 추가된 모듈이 대상 프로젝트 아래에 있는지 확인합니다.
여러 통합 문서가 열려 있으면 잘못된 프로젝트를 선택하기 쉽습니다. 프로젝트 이름 옆의 파일 이름을 확인하세요. 같은 이름의 모듈을 가져오면 기존 모듈이 자동으로 교체된다고 가정하지 않습니다. 새 구성 요소가 추가되고 이름에 번호가 붙을 수 있으므로 중복 코드와 프로시저 이름을 점검합니다.
가져온 코드가 실행되지 않을 때
- 시트 참조: Sheet1 같은 코드 이름이나 Worksheets("자료")의 탭 이름이 대상 파일에도 있는지 확인합니다.
- 다른 코드: 호출하는 Sub·Function·클래스가 대상 프로젝트에 있는지 확인합니다.
- 참조 라이브러리: [도구] → [참조]에서 필요한 라이브러리가 설치되어 있고 누락되지 않았는지 확인합니다.
- 외부 경로: 원래 컴퓨터의 파일 경로나 연결 정보를 그대로 사용하지 않는지 확인합니다.
시트·ThisWorkbook 이벤트 코드는 표준 모듈에 가져온 것만으로 원래 이벤트와 연결되지 않습니다. 실행을 확인하기 전에 대상과 동작을 검토하고 편집기의 컴파일 명령으로 문법 오류를 점검합니다. 보안 설정을 일괄 해제하지 말고 신뢰할 수 있는 코드만 허용하세요.
검토가 끝나면 대상 파일을 .xlsm처럼 VBA를 보존하는 형식으로 저장합니다. 잘못 가져왔다면 원본 백업으로 돌아가거나 새로 추가된 구성 요소만 정확히 확인해 제거합니다. 기존에 사용하던 모듈을 삭제하지 않도록 주의하세요.
![원본 파일을 열고 Alt+F11로 편집기를 엽니다. 프로젝트 탐색기에서 해당 파일의 [모듈] 아래에 있는 모듈을 오른쪽 버튼으로 누르고 [파일 내보내기]를 선택하여 .bas 파일을 저장합니다.](https://www.manualfactory.net/wp-content/uploads/엑셀-VBA-모듈-내보내기-가져오기-01.png)
![대상 파일의 프로젝트를 선택한 뒤 [파일] → [파일 가져오기]에서 저장한 .bas 파일을 선택합니다. 추가된 모듈이 대상 프로젝트 아래에 있는지 확인합니다.](https://www.manualfactory.net/wp-content/uploads/엑셀-VBA-모듈-내보내기-가져오기-02.png)




