Cách phá mật khẩu Protect Sheet trong excel (Unprotect sheet without password)

Ngày 20 tháng 4 năm 2012 Trương Chương Dương
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:
  1. Có MS Office (hiển nhiên roài :P )
  2. 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ó.
Sau khi đã chuẩn bị đầy đủ đồ chơi, tiếp theo thực hiện các bước sau:
  1. Mở file excel cần mở khoá lên
  2. Ấn Alt+F11 để mở VBA
  3. Ấn F7 để mở cửa sổ soạn thảo mã nguồn
  4. Dán đoạn code bên dưới vào cửa sổ vừa mở ra đó
  5. Ấn F5, hoặc vào menu Run\Run Sub/User form để chạy đoạn mã này
  6. 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
  7. 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.
  8. Chúc bạn may mắn :D
Nếu có vướng mắc gì thì các bạn cứ trả lời ngay bên dưới nhé.
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...