Nhờ các bạn giúp unprotect sheet bằng password (1 người xem)

  • Thread starter Thread starter mrtq_86
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

mrtq_86

Thành viên chính thức
Tham gia
16/11/09
Bài viết
54
Được thích
1
Hi all,
Mình sưu tầm được code này để khóa và mở khóa, tuy nhiên ở đây duyệt toàn bộ workbook. Mình muốn làm trên từng sheet 1 thì phải sửa như thế nào?
Mã:
Sub sbProtectAllSheets()Dim pwd1 As String, pwd2 As String
pwd1 = "vtth@123"
If pwd1 = "" Then Exit Sub
pwd2 = "vtth@123"
If pwd2 = "" Then Exit Sub
'Check if both the passwords are identical
If InStr(1, pwd2, pwd1, 0) = 0 Or _
InStr(1, pwd1, pwd2, 0) = 0 Then
MsgBox "You entered different passwords. No action taken"
Exit Sub
End If
For Each ws In Worksheets
ws.Protect Password:=pwd1
Next
MsgBox "All sheets Protected."
Exit Sub
End Sub

Mã:
Sub sbUnProtectAll()On Error GoTo ErrorOccured
Dim pwd1 As String
pwd1 = InputBox("Please Enter the password")
If pwd1 = "" Then Exit Sub
For Each ws In Worksheets
ws.Unprotect Password:=pwd1
Next
MsgBox "All sheets UnProtected."
Exit Sub
ErrorOccured:
MsgBox "Sheets could not be UnProtected - Password Incorrect"
Exit Sub
End Sub

thanks!
 
Bạn phải hết sức lưu ý với workbook có hơn 10 worksheet vì như thế sẽ rất mỏi tay chọn YES, YES, ... và nếu như cần chỉnh sửa, mở khóa thì bạn phải tự nhớ mật khẩu vào thao tác rất lâu đấy!
Thực sự chẳng hiểu bạn muốn gì nữa, nhưng đây là code:
Sub NhayQuaTungSheet_hoi_Khoa_hay_ko()
Dim SoWorkSheet, x As Integer
SoWorkSheet = ActiveWorkbook.Sheets.Count
Dim tenWs, matkhau1 As String​
matkhau1 = InputBox("Your password: ", "Enter your password to protect worksheet: ", "")
If matkhau1 = "" Then
Exit Sub​
Else
x = 0
For Each ws In ActiveWorkbook.Sheets
x = x + 1
ws.Activate
tenWsVBA = ActiveSheet.CodeName
tenWs = ActiveSheet.Name
hoi = MsgBox("Do you want to protect this worksheet, Yes or No? (" & tenWs & ")" & vbCrLf & "Worksheet Countdown: " & SoWorkSheet - x, vbOKCancel, "...:Noticeboard:...")
If hoi = 1 Then
Application.DisplayAlerts = False
ws.Protect matkhau1
Application.DisplayAlerts = True​
Else
Exit Sub​
End If​
Next​
End If​
End Sub
 
Lần chỉnh sửa cuối:
Thanks bạn Lequocvan đã giúp đỡ,

ý của mình là tạo mỗi sheets 2 button KHÓA và MỞ KHÓA, khi làm việc ở sheet nào thì mới thao tác việc khóa hay mở khóa tại đó.

Bởi có những sheet không cần khóa để cho người sử dụng làm việc. Mọi người táy máy nghịch code bị lỗi lại phải đi sửa rất mất việc.

 
Lần chỉnh sửa cuối:
Thanks bạn Lequocvan đã giúp đỡ,

ý của mình là tạo mỗi sheets 2 button KHÓA và MỞ KHÓA, khi làm việc ở sheet nào thì mới thao tác việc khóa hay mở khóa tại đó.

Bởi có những sheet không cần khóa để cho người sử dụng làm việc. Mọi người táy máy nghịch code bị lỗi lại phải đi sửa rất mất việc.

Bạn thử cách này xem đúng ý bạn k nhé, chú ý tên sheet trong code:
[GPECODE=vb]
Sub Protect_UnProtectSheet()
Dim sh As Worksheet
Dim answer As Variant
Set sh = ThisWorkbook.Sheets("Sheet1")
answer = MsgBox("Ban muon Protect/Unprotect (YES/NO)", vbYesNo)
If answer = vbYes Then
sh.Protect 123 '123 la pass de protect
Else
sh.Unprotect 123
End If
End Sub
[/GPECODE]
Xem bài hướng dẫn tại đây: http://bluesofts.net/cac-bai-hoc-ha...rotect-unprotect-sheet-bang-cau-lenh-vba.html
 
Hi all,

Mình đã làm được như thế này chạy ok

Nhưng còn một vấn đề làm sao ẩn pass mở khóa trong InputBox
Mã:
Sub sbProtectAllSheets()
Dim pwd1 As String, pwd2 As String
pwd1 = "Vtth@123"
If pwd1 = "" Then Exit Sub
pwd2 = "Vtth@123"
If pwd2 = "" Then Exit Sub
'Check if both the passwords are identical
If InStr(1, pwd2, pwd1, 0) = 0 Or _
InStr(1, pwd1, pwd2, 0) = 0 Then
MsgBox "You entered different passwords. No action taken"
Exit Sub
End If
If ActiveSheet.ProtectContents = True Then
    MsgBox "Sheet '" & ActiveSheet.Name & "' da khoa!", vbInformation
Else
    If MsgBox("Sheet '" & ActiveSheet.Name & "' da mo khoa, ban co muon khoa khong?", _
    vbYesNo + vbQuestion, "protect Active Sheet") = vbNo Then Exit Sub
    ActiveSheet.Protect Password:=pwd1
End If
Exit Sub
End Sub
Mã:
Sub sbUnProtectAll()
On Error GoTo ErrorOccured
Dim pwd1 As String
If ActiveSheet.ProtectContents = False Then
   MsgBox "Sheet '" & ActiveSheet.Name & "' Chua khoa!", vbInformation
Else
    If MsgBox("Sheet '" & ActiveSheet.Name & "' da khoa, ban co muon mo khoa khong?", _
    vbYesNo + vbQuestion, "Unprotect Active Sheet") = vbNo Then Exit Sub
    
    pwd1 = InputBox("Please Enter the password")
    
    If pwd1 = "" Then Exit Sub
    
    ActiveSheet.Unprotect Password:=pwd1
    MsgBox "Da mo khoa."
End If
Exit Sub
ErrorOccured:
MsgBox "Sheets khong the mo khoa - Mat khau sai"
Exit Sub
End Sub


Các bạn giúp nha

Thanks
 
Hi all,

Mình đã làm được như thế này chạy ok

Nhưng còn một vấn đề làm sao ẩn pass mở khóa trong InputBox

Các bạn giúp nha

Thanks
InputBox không thể ẩn chữ được bạn. Theo tôi thì bạn nên sử dụng Form cho việc này, trên Form có 1 TextBox để nhập password, đối tượng này thì có thuộc tính PasswordChar. Khi cần nhập password thì gọi Form, khi đóng Form thì chuỗi được nhập từ TextBox sẽ được gán ngược trở lại cho biến pwd1.
 
InputBox không thể ẩn chữ được bạn. Theo tôi thì bạn nên sử dụng Form cho việc này, trên Form có 1 TextBox để nhập password, đối tượng này thì có thuộc tính PasswordChar. Khi cần nhập password thì gọi Form, khi đóng Form thì chuỗi được nhập từ TextBox sẽ được gán ngược trở lại cho biến pwd1.

Thanks NghiaPhuc,

Chak phải làm như vậy thôi.

Thank a lot!
 
Web KT

Bài viết mới nhất

Back
Top Bottom