티스토리 뷰

VBA를 사용하여

엑셀 시트 보호 나 통합문서 보호 비밀번호를 까먹었을 때

비밀번호 없이 해제하는 방법에 대해 알아보자.


(다른 방법도 있으니 이 방법으로 안된다면 아래 페이지에서 시도해보자.

참조: 엑셀 시트보호 or 통합문서 비번 없이 해제하기 Ver. 2 )


엑셀 VBA Project의 보호 비번을 해제 하고 싶다면 아래 페이지를 확인하자.

참조 : 엑셀 VBA 프로젝트 보호 비번 없이 해제하기


이 방법은 엑셀 2010 이하 버전에서 적용할 수 있는 방법으로,


* 오피스 2010 이후 버전(2013, 2016, etc.)에서 이 방법을 사용하려면

기존 파일을 다른 이름으로 저장하여

'엑셀 97 - 2003 통합 문서 (*.xls)'로 저장하고, 해제를 한 후에 다시 '엑셀 통합 문서 (*.xlsx)'로 저장하면 된다.


순서

1. 보호 해제할 엑셀 파일을 연다.

2. Alt+F11을 눌러 Microsoft Visual Basic for Application 창을 연다.

3. 프로젝트 창 - VBAProject (통합 문서1) 를 마우스 오른쪽 클릭하고 삽입 - 모듈을 눌러 모듈을 생성한다.

4. 생성된 모듈을 더블클릭 한 후, 아래와 같이 코드를 복사해 넣는다.

  a) 시트 보호 해제를 원할 경우

Sub PasswordBreaker()
    'Breaks worksheet password protection.
 
    Dim i As Integer, j As Integer, k As Integer
    Dim l As Integer, m As Integer, n As Integer
    Dim i1 As Integer, i2 As Integer, i3 As Integer
    Dim i4 As Integer, i5 As Integer, i6 As Integer
 
    On Error Resume Next
 
    For i = 65 To 66: For j = 65 To 66: For k = 65 To 66
    For l = 65 To 66: For m = 65 To 66: For i1 = 65 To 66
    For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66
    For i5 = 65 To 66: For i6 = 65 To 66: For n = 32 To 126
 
        Sheet6.Unprotect Chr(i) & Chr(j) & Chr(k) & _
            Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & _
            Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
 
        If Sheet6.ProtectContents = False Then
            MsgBox "Password is " & Chr(i) & Chr(j) & _
                Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & _
                Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
 
            Exit Sub
 
        End If
 
    Next: Next: Next: Next: Next: Next
    Next: Next: Next: Next: Next: Next
End Sub

    - 중간에 있는 'Sheet6' 부분을 해제하고 싶은 시트의 이름을 넣는다.


  b) 통합문서보호 해제를 원할경우

Sub PasswordBreaker()
    'Breaks worksheet password protection.
    Dim i As Integer, j As Integer, k As Integer
    Dim l As Integer, m As Integer, n As Integer
    Dim i1 As Integer, i2 As Integer, i3 As Integer
    Dim i4 As Integer, i5 As Integer, i6 As Integer
    On Error Resume Next
    For i = 65 To 66: For j = 65 To 66: For k = 65 To 66
    For l = 65 To 66: For m = 65 To 66: For i1 = 65 To 66
    For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66
    For i5 = 65 To 66: For i6 = 65 To 66: For n = 32 To 126
    ThisWorkbook.Unprotect Chr(i) & Chr(j) & Chr(k) & _
        Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & _
        Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
    If ThisWorkbook.ProtectStructure = False Then
        MsgBox "One usable password is " & Chr(i) & Chr(j) & _
            Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & _
            Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
         Exit Sub
    End If
    Next: Next: Next: Next: Next: Next
    Next: Next: Next: Next: Next: Next
End Sub


5. F5키를 눌러 매크로를 실행하고 대기 하면 완료됐다는 팝업 창이 하나 뜰것이다.

나와있는 내용을 외울 필요 없이 OK만 눌러준다.


끝!

댓글