Cách phá mật khẩu Protect Sheet trong excel (Unprotect sheet without password)
Ngày 20 tháng 4 năm 2012
Thông thường, để bảo vệ việc thay đổi dữ liệu dẫn tới sai sót không đáng có, thì phương án khoá mật khẩu cho sheet là lựa chọn tuyệt vời. Tuy nhiên sẽ thế nào nếu một ngày đẹp trời nào đó bạn quên mật khẩu? Hoặc bạn lấy một file excel nào đó trên mạng và cần thay đổi những phần nội dung đã bị khoá? Hoặc một số trường hợp virus tự động khoá sheet bằng một mật khẩu ngẫu nhiên nào đó :(
Có một cách đơn giản để unprotect. Cụ thể như sau:
Yêu cầu hệ thống:
Có một cách đơn giản để unprotect. Cụ thể như sau:
Yêu cầu hệ thống:
- Có MS Office (hiển nhiên roài :P )
- Có cài VBA, nếu bạn không biết nó là gì, hãy thử mở excel, xong ấn Alt+F11, nếu nó mở ra cửa sổ Microsoft Visual Basic tức đã cài VBA, nếu nó không ra thì hãy chạy lại bộ cài MS Office, chọn update, xong tìm trong nhóm cuối cùng của các gói cài đặt sẽ thấy nó.
- Mở file excel cần mở khoá lên
- Ấn Alt+F11 để mở VBA
- Ấn F7 để mở cửa sổ soạn thảo mã nguồn
- Dán đoạn code bên dưới vào cửa sổ vừa mở ra đó
- Ấn F5, hoặc vào menu Run\Run Sub/User form để chạy đoạn mã này
- Nếu ấn F5 mà nó yêu cầu lựa chọn Macroname thì chọn SheetXXX.unprotectedAll rồi click Run nó sẽ chạy
- Chờ từ một đến vài phút (tuỳ tốc độ CPU từng máy tính) sẽ có thông báo sheet đã được unprotect. Mỗi khi một sheet được unprotected thành công, bạn sẽ nhận được thông báo, nhớ nhấn Ok để nó unprotect sheet tiếp theo nhé. Nếu không muốn nhận được thông báo này, bạn chỉ cần xoá 3 dòng mã từ dòng 50 đến dòng 54 là xong.
- Chúc bạn may mắn :D
Sub unprotectedAll() Dim i As Integer For i = 1 To Application.Sheets.Count PasswordBreaker Application.Sheets(i) Next End Sub Sub PasswordBreaker(MySheet) Dim pass As String If MySheet.ProtectContents = False Then MsgBox "Sheet '" & MySheet.Name & "' is unprotected!", vbInformation Else 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 pass = Chr(i) & Chr(j) & Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n) MySheet.Unprotect pass Next: Next: Next: Next: Next: Next Next: Next: Next: Next: Next: Next If MySheet.ProtectContents = False Then MsgBox "Sheet '" & MySheet.Name & "' is unprotected!", vbInformation End If End If End Sub
Đang tải dữ liệu...