엑셀 VBA 프로젝트가 ‘잠겨 있음’으로 보일 때 해제하는 안전한 방법 총정리

이 글의 목적은 엑셀에서 VBA 프로젝트가 “잠겨 있음” 또는 “Project is unviewable”로 표시될 때 합법적이고 안전한 절차로 문제를 진단하고 해제하거나 복구하는 방법을 현장 실무 수준으로 정리하는 것이다.

VBA 프로젝트가 ‘잠겨 있음’으로 보이는 대표 상황 정의

엑셀에서 개발 도구 → Visual Basic 또는 Alt+F11로 VBA 편집기를 열었을 때 다음과 같은 메시지가 나타나는 경우가 있다.

  • “Project is unviewable” 메시지로 코드 창에 접근이 차단되는 경우이다.
  • 프로젝트 탐색기에서 프로젝트 아이콘에 자물쇠가 보이며 ‘잠겨 있음’으로 표시되는 경우이다.
  • 암호 입력 창이 반복 표시되거나, 올바른 암호를 넣어도 다시 잠김 상태로 돌아가는 경우이다.

이 현상은 크게 네 가지 축에서 원인이 갈린다. 보호 설정, 보안 및 정책, 파일 상태, 환경/캐시 충돌이다.

법적·윤리적 전제

주의 : 타인이 설정한 VBA 암호를 무단으로 우회하거나 해제하는 행위는 불법일 수 있고 정책 위반일 수 있다. 본 문서는 정당한 권한을 가진 사용자가 자신의 프로젝트 또는 조직 자산에 대해 합법적 범위에서 복구·해제하는 절차만 다룬다.

해결 전략 개요: 입력–레버–출력 관점

문제를 빠르게 수습하기 위해 아래와 같이 시스템적으로 접근한다.

  1. 입력 식별 — 파일 유형, 열람 경로, 보호 상태, 조직 정책, 충돌 여부를 수집한다.
  2. 레버 선택 — 보호 해제 절차, 보안 신뢰 설정, 파일 상태 정리, 캐시 제거, 인스턴스 정리, 업데이트 복구 같은 가장 영향력이 큰 조치를 우선 적용한다.
  3. 출력 검증 — VBE에서 프로젝트가 보이는지, 모듈 열람·편집이 가능한지, 재발 방지 설정이 유지되는지 확인한다.

원인별 체크리스트와 즉시 조치

증상가능 원인확인 포인트즉시 조치
Project is unviewable VBA 보호 설정 또는 애드인 배포 정책이다 파일 확장자 xlam/xla인지, 배포용 애드인인지 확인한다 소스 원본에서 수정한다 또는 담당자에 암호/원본 요청한다
자물쇠 아이콘과 암호 입력 창 VBE 보호 암호 설정이다 VBE → 도구 → VBAProject 속성 → 보호 탭 확인한다 정상 암호로 해제한 뒤 보호 해제 저장한다
암호 맞아도 다시 잠김 다중 인스턴스·파일 잠금·손상 캐시다 작업 관리자 EXCEL.EXE 중복, ~임시 잠금파일 존재 확인한다 모든 인스턴스 종료, 임시파일·EXD 캐시 삭제 후 재시작한다
보기는 되나 편집 불가 읽기 전용, 권한·정책 제한이다 원본 위치, OneDrive/SharePoint 동기 상태, GPO 존재 확인한다 로컬 신뢰 위치로 복사, 정책 담당자에 권한 요청한다
VBE 자체 접근 불가 조직 보안 정책 또는 레지스트리 제한이다 IT의 매크로 정책, “VBA 사용 안 함” 통지 확인한다 승인 절차에 따라 일시 해제 요청한다
인터넷에서 받은 파일 보호된 보기 및 차단 파일이다 속성의 “차단 해제” 또는 보호된 보기 배너 확인한다 차단 해제 후 신뢰 위치로 이동한다

Step 1. 파일·배포 형태 판별

먼저 파일의 역할과 배포 형태를 구분한다.

  • 업무용 애드인(xlam/xla)은 일반적으로 Project is unviewable 상태로 배포한다. 소스 편집은 배포 원본에서만 가능하다.
  • 일반 통합문서(xlsm/xlsb)에서 잠김이면 소유자가 보호 암호를 설정했을 가능성이 높다.
  • 공유 드라이브/버전관리 중이면 동시에 열린 인스턴스가 잠금을 유지할 수 있다.

Step 2. 보호된 보기·차단 해제

  1. 파일을 탐색기에서 우클릭하고 속성을 연다.
  2. 이 파일은 다른 컴퓨터에서 가져온 것으로… 항목이 보이면 차단 해제를 체크하고 적용한다.
  3. 엑셀을 열어 상단 노란 배너가 보이면 편집 사용콘텐츠 사용을 순서대로 허용한다.
  4. 로컬의 신뢰할 수 있는 위치 폴더로 파일을 이동한 뒤 다시 연다.

Step 3. 암호로 보호된 프로젝트의 정상 해제

정당한 암호를 보유한 경우의 절차이다.

  1. Alt+F11로 VBE를 연다.
  2. 왼쪽 프로젝트 탐색기에서 대상 프로젝트를 선택한다.
  3. 도구 → VBAProject 속성 → 보호 탭을 연다.
  4. 보기용 잠금 체크가 되어 있으면 암호를 입력해 해제한 후 체크를 해제한다.
  5. 파일을 저장하고 닫은 뒤 다시 열어 잠김 상태가 풀렸는지 확인한다.
주의 : 암호를 모르면 우회하거나 크래킹하는 방법을 사용하지 말아야 한다. 파일 소유자나 관리자에게 원본 또는 암호 제공을 공식 요청해야 한다.

Step 4. 다중 인스턴스·임시 잠금·캐시 충돌 정리

암호가 맞는데도 잠김이 반복되거나, 갑자기 “unviewable”로 바뀌는 경우 아래 절차가 효과적이다.

  1. 모든 엑셀 창을 저장 후 닫는다.
  2. 작업 관리자를 열어 EXCEL.EXE 프로세스가 남아 있으면 모두 종료한다.
  3. 파일이 있는 폴더에서 ~$파일명으로 시작하는 임시 잠금 파일이 있으면 제거한다.
  4. VBA 컨트롤 캐시를 초기화한다. 다음 폴더의 .exd 파일을 삭제한다.
%appdata%\Microsoft\Forms %temp% 
  1. 윈도우를 재시작한 뒤 파일을 다시 연다.
주의 : 공용 PC나 원격 세션에서 다른 사용자가 동일 파일을 열고 있으면 잠금이 유지된다. 독점 사용 환경에서 재현 시험을 한다.

Step 5. 보안 정책·신뢰 설정 점검

조직 환경에서는 그룹 정책·엔드포인트 보안 도구가 VBE 접근을 제한할 수 있다. 사용자가 임의로 해제할 수 없는 경우가 많다.

  • 매크로 차단 정책이 적용돼 있으면 VBE 접근 자체가 제한될 수 있다. IT 관리자에게 개발 목적 승인 절차를 따른다.
  • 신뢰할 수 있는 위치에 코드 파일을 두면 불필요한 차단을 줄일 수 있다. 조직이 허용하는 범위 내에서 사용한다.
  • 디지털 서명으로 서명된 매크로는 신뢰 결정을 간소화한다. 사내 코드 서명 인증서 사용을 고려한다.

Step 6. 읽기 전용·동기화 이슈 제거

OneDrive·SharePoint·NAS 환경에서 동시 편집 또는 동기화 지연으로 파일이 읽기 전용으로 열리면 VBE 변경이 반영되지 않거나 잠김이 지속될 수 있다.

  1. 파일을 다른 이름으로 로컬 드라이브에 저장한다.
  2. 동기화 상태가 완료인 것을 확인한 뒤 닫고 다시 연다.
  3. 가능하면 오프라인에서 편집 후 단일 버전으로 업로드한다.

Step 7. 손상 의심 시 모듈 구조 재구성

파일 손상으로 프로젝트 메타데이터가 비정상일 때는 구조를 재구성한다. 암호를 알고 있고 열람 가능한 상황에서만 유효하다.

  1. VBE에서 각 모듈·폼을 파일 → 내보내기로 추출한다.
  2. 새 통합문서(xlsm)를 만들고 VBE에서 파일 → 가져오기로 모듈을 삽입한다.
  3. 참조 설정을 도구 → 참조에서 원본과 동일하게 맞춘다.
  4. 양식 폼은 종속 파일도 함께 이동한다.
' 예시: 초기화 루틴 최소 검증 코드 Option Explicit Public Sub SelfTest() Debug.Print "VBA 구조 정상 동작 확인" End Sub 
주의 : 컴파일 오류가 발생하면 디버그 → 컴파일 VBAProject를 실행하여 종속 참조 누락을 먼저 해결해야 한다.

Step 8. XLSTART·애드인 간섭 제거

시작 시 자동 로드되는 애드인이 VBE 상태를 간섭하는 사례가 있다.

  1. %appdata%\Microsoft\Excel\XLSTART%programfiles%\Microsoft Office\root\OfficeXX\XLSTART 폴더를 확인한다.
  2. 문제 재현 동안 해당 폴더의 파일을 임시로 다른 위치로 이동하여 격리한다.
  3. 엑셀을 /safe 모드로 기동해 비교한다.
"C:\Program Files\Microsoft Office\root\Office16\EXCEL.EXE" /safe 

Step 9. 버전 차이·32/64비트 호환성 점검

구버전에서 만든 애드인이나 외부 COM 구성 요소를 참조한 프로젝트는 다른 버전에서 ‘unviewable’ 또는 예외가 발생할 수 있다.

  • 같은 메이저 버전의 엑셀에서 열어 비교한다.
  • 외부 참조는 GUID 기준으로 재설정하고, 32/64비트 전용 라이브러리는 아키텍처를 일치시킨다.

재발 방지 가이드

  • 배포 전략을 분리한다. 개발 소스는 xlsm로 내부 관리하고, 사용자 배포는 xlam로 서명 후 “보기 잠금” 상태로만 배포한다.
  • 소스 관리를 적용한다. Git 등의 버전 관리로 모듈을 파일 단위로 백업한다.
  • 백업·복구를 표준화한다. 주기적 내보내기 스크립트를 사용한다.
' 모듈 일괄 내보내기 샘플(Windows, 신뢰된 환경에서만 사용) ' FileSystemObject 참조 필요(Microsoft Scripting Runtime) Option Explicit Public Sub ExportAllModules() Dim vbComp As Object Dim fso As Object Dim tgt As String tgt = Environ$("USERPROFILE") & "\Desktop\VBA_Backup\" Set fso = CreateObject("Scripting.FileSystemObject") If Not fso.folderexists(tgt) Then fso.CreateFolder tgt For Each vbComp In ThisWorkbook.VBProject.VBComponents vbComp.Export tgt & vbComp.Name & ModuleExt(vbComp.Type) Next MsgBox "Export completed to: " & tgt, vbOKOnly End Sub
Private Function ModuleExt(t As Long) As String
Select Case t
Case 1: ModuleExt = ".bas" ' 표준 모듈
Case 2: ModuleExt = ".cls" ' 클래스 모듈
Case 3: ModuleExt = ".frm" ' 사용자 폼
Case Else: ModuleExt = ".txt"
End Select
End Function
주의 : 위 스크립트는 신뢰할 수 있는 위치에서만 실행하고, 조직 정책상 허용되는지 확인해야 한다. 또한 도구 → 매크로 보안 → VBA 프로젝트 개체 모델에 대한 신뢰 액세스를 허용해야 할 수 있다.

현장 트러블슈팅 시나리오별 체크 흐름

시나리오 A. 배포 애드인에서 코드를 열어야 하는 요청

  1. 확장자가 xlam인지 확인한다.
  2. 배포 정책 문서를 확인하고, 개발 저장소의 원본 프로젝트를 확보한다.
  3. 사용자 환경에서는 소스 열람을 시도하지 않고 기능 테스트만 수행한다.

시나리오 B. 개인 프로젝트가 갑자기 unviewable

  1. 최근 비정상 종료가 있었는지 확인한다.
  2. 모든 EXCEL.EXE 종료, 임시파일과 EXD 캐시 삭제 후 재부팅한다.
  3. 필요 시 새 통합문서로 모듈을 내보내기·가져오기 한다.

시나리오 C. 암호를 잊어버린 자체 프로젝트

  1. 조직 절차에 따라 소유 증빙과 함께 관리자에게 재설정 요청한다.
  2. 이전 백업에서 모듈 파일을 복원한다.
  3. 우회 도구 사용은 금지한다.

문제 확인을 위한 점검표

점검 항목예/아니오조치
인터넷에서 받은 파일이며 차단 상태인가속성에서 차단 해제 후 신뢰 위치로 이동한다
읽기 전용 또는 공유로 열렸는가로컬 사본으로 저장 후 단독으로 연다
EXCEL.EXE 다중 인스턴스가 남아 있는가모두 종료하고 재시작한다
임시 잠금파일(~$)이 남아 있는가파일 닫은 뒤 잠금파일 삭제한다
EXD 캐시가 손상되었는가Forms 폴더의 .exd 삭제 후 재부팅한다
조직 정책으로 VBE 접근이 제한되는가IT 승인 절차로 예외를 신청한다
VBA 암호를 합법적으로 보유하는가암호로 해제하고 보호 설정을 저장한다
배포 애드인 소스에 접근할 권한이 있는가원본 저장소에서 작업한다

FAQ

“Project is unviewable”와 “암호로 잠김”은 무엇이 다른가

“암호로 잠김”은 암호를 아는 사용자가 해제할 수 있는 보호 상태이다. “Project is unviewable”은 배포·정책·상태 문제로 구조 자체가 열람 대상이 아님을 뜻하며, 보통 배포 원본이나 권한 없이는 열람할 수 없다.

암호를 잊었는데 내 프로젝트이다. 복구가 가능한가

우회는 권장하지 않는다. 백업에서 모듈 파일을 복원하거나, 소유 증빙을 갖추고 관리 절차로 재설정을 요청해야 한다. 향후를 위해 주기적 모듈 내보내기와 암호 금고 관리 도입을 권한다.

정상 암호를 넣어도 잠김이 계속된다

다중 인스턴스와 캐시 충돌 가능성이 높다. 모든 EXCEL.EXE를 종료하고 임시 잠금파일과 EXD 캐시를 삭제한 뒤 재부팅한다. XLSTART 애드인을 격리하고 /safe 모드 기동으로 비교한다.

회사 PC에서만 잠김이고 개인 PC에서는 정상이다

조직 보안 정책 또는 신뢰 위치 제한일 가능성이 높다. 사유와 목적을 명확히 하여 IT에 예외 승인을 요청한다. 개인 장비로의 소스 이동은 정책을 우선 확인해야 한다.

배포 애드인(xlam)에서 일부 사용자만 잠김 현상을 보고한다

사용자 환경의 보호된 보기, 차단 상태, 동기화 충돌, 애드인 충돌을 우선 점검한다. 동일 빌드·동일 서명 상태인지 확인하고, 신뢰 위치 배포와 자동 업데이트 절차를 정비한다.