Pages

Unprotect sheet trong file excel

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.
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
    ActiveSheet.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 ActiveSheet.ProtectContents = 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

0 nhận xét:

Đăng nhận xét

Lịch vạn niên

Đồng hồ

Số lượng người truy cập

Nhận xét

Số lượng người truy cập: