안녕하세요~ 이런 현상은 어떤 원인에 의해 일종의 “고아(Orphan) 시트 모듈”이 생긴 상태입니다. ShtMain은 실제 워크시트가 없는데 VBE에만 남은 시트 컴포넌트예요. 1. 일단 VBE에서 수동으로 제거해 봅니다. 프로젝트 탐색기에서 ShtMain 선택 → 우클릭 → 제거(Remove ShtMain) → “내보내겠습니까?”는 아니오 이렇게 하면 ShtMain 모듈이 바로 사라집니다. 2. 만약 “제거”가 비활성화라면, 표준 모듈을 하나 추가하고 아래 코딩을 복사해서 넣고 실행해 보세요.
Sub CodeName삭제()
Dim ws As Worksheet
Dim cn As String: cn = "ShtMain" '// 삭제하려는 CodeName
Dim target As Worksheet
Dim vbComp As Object
Dim found As Boolean
'// 1. CodeName으로 시트 검색
For Each ws In ThisWorkbook.Worksheets
If StrComp(ws.codeName, cn, vbTextCompare) = 0 Then
Set target = ws
Exit For
End If
Next ws
'// 2. 시트가 존재하면 삭제
If Not target Is Nothing Then
On Error GoTo CleanExit
Application.DisplayAlerts = False
target.Delete
Application.DisplayAlerts = True
MsgBox cn & " 시트가 삭제되었습니다.", vbInformation
Exit Sub
End If
'// 3. 시트는 없지만 고아 모듈이 남아있는지 확인
On Error Resume Next
For Each vbComp In ThisWorkbook.VBProject.VBComponents
If vbComp.Type = 100 Then '// 100 = vbext_ct_Document (시트 모듈)
If StrComp(vbComp.Name, cn, vbTextCompare) = 0 Then
found = True
'// 고아 모듈 삭제
ThisWorkbook.VBProject.VBComponents.Remove vbComp
MsgBox cn & " 고아 모듈이 삭제되었습니다.", vbInformation
Exit Sub
End If
End If
Next vbComp
On Error GoTo 0
'// 4. 아무것도 없음
If Not found Then
MsgBox cn & " 이름의 시트나 모듈을 찾을 수 없습니다.", vbExclamation
End If
CleanExit:
Application.DisplayAlerts = True
End Sub
그리고 매크로 설정 "VBA 프로젝트 개체 모델에 안전하게 액세스할 수 있음" 에 체크 필요합니다. 3. 혹시 삭제가 안된다면, 첨부파일로 올려보세요~
이런 현상은 어떤 원인에 의해 일종의 “고아(Orphan) 시트 모듈”이 생긴 상태입니다.
ShtMain은 실제 워크시트가 없는데 VBE에만 남은 시트 컴포넌트예요.
1. 일단 VBE에서 수동으로 제거해 봅니다.
프로젝트 탐색기에서 ShtMain 선택 → 우클릭 → 제거(Remove ShtMain) → “내보내겠습니까?”는 아니오
이렇게 하면 ShtMain 모듈이 바로 사라집니다.
2. 만약 “제거”가 비활성화라면,
표준 모듈을 하나 추가하고 아래 코딩을 복사해서 넣고 실행해 보세요.
Sub CodeName삭제() Dim ws As Worksheet Dim cn As String: cn = "ShtMain" '// 삭제하려는 CodeName Dim target As Worksheet Dim vbComp As Object Dim found As Boolean '// 1. CodeName으로 시트 검색 For Each ws In ThisWorkbook.Worksheets If StrComp(ws.codeName, cn, vbTextCompare) = 0 Then Set target = ws Exit For End If Next ws '// 2. 시트가 존재하면 삭제 If Not target Is Nothing Then On Error GoTo CleanExit Application.DisplayAlerts = False target.Delete Application.DisplayAlerts = True MsgBox cn & " 시트가 삭제되었습니다.", vbInformation Exit Sub End If '// 3. 시트는 없지만 고아 모듈이 남아있는지 확인 On Error Resume Next For Each vbComp In ThisWorkbook.VBProject.VBComponents If vbComp.Type = 100 Then '// 100 = vbext_ct_Document (시트 모듈) If StrComp(vbComp.Name, cn, vbTextCompare) = 0 Then found = True '// 고아 모듈 삭제 ThisWorkbook.VBProject.VBComponents.Remove vbComp MsgBox cn & " 고아 모듈이 삭제되었습니다.", vbInformation Exit Sub End If End If Next vbComp On Error GoTo 0 '// 4. 아무것도 없음 If Not found Then MsgBox cn & " 이름의 시트나 모듈을 찾을 수 없습니다.", vbExclamation End If CleanExit: Application.DisplayAlerts = True End Sub그리고 매크로 설정 "VBA 프로젝트 개체 모델에 안전하게 액세스할 수 있음" 에 체크 필요합니다.
3. 혹시 삭제가 안된다면, 첨부파일로 올려보세요~
낮익은 닉네임에 반갑습니다^^
행복한 연휴와 쉼 되세요~~
저두 궁금합니다.
궁금했는데 감사합니다