- Tham gia
- 12/12/06
- Bài viết
- 3,661
- Được thích
- 18,158
Ngồi nhấn unprotect sheet từng sheet mất công, thủ công quá. Xin được trợ giúp code bỏ hàng loạt unprotect sheet trong office 2003.
Cám ơn nhiều.
Cám ơn nhiều.
Anh dùng code này thử (với điều kiện toàn bộ các sheet đều chung 1 password)Ngồi nhấn unprotect sheet từng sheet mất công, thủ công quá. Xin được trợ giúp code bỏ hàng loạt unprotect sheet trong office 2003.
Cám ơn nhiều.
Sub UnprotectAllSheets()
Dim Sh As Worksheet, pass As String
On Error GoTo ExitSub
pass = Application.InputBox("Nhap password de Unprotect", Type:=2)
If pass <> "False" Then
For Each Sh In ActiveWorkbook.Worksheets
Sh.Unprotect pass
Next
End If
Exit Sub
ExitSub:
MsgBox "Ban nhap không dung password"
End Sub
Sub protectAllSheets()
Dim Sh As Worksheet, pass As String
On Error GoTo ExitSub
pass = Application.InputBox("Nhap password de protect", Type:=2)
If pass <> "False" Then
For Each Sh In ActiveWorkbook.Worksheets
Sh.Protect pass
Next
End If
Exit Sub
ExitSub:
MsgBox "Ban nhap không dung password"
End Sub
Cũng được! Nhưng anh nên thêm đoạn kiểm tra xem sheet đã protect chưa (chẳng lẽ protect rồi lại protect nữa?)Cám ơn sư phụ ndu96081631 nhe, code thật tuyệt, thật chuẩn. Chạy vèo vèo.
Do qua đang viết bài, các công việc ghi nhớ cần làm cho đầu năm 2012
PS: Nhân tiện cho qua xin code, protect - khoá 1 loạt các sheet. Chân thành cám ơn
Qua thay thế dòng chữ unprotect bởi protect và test thấy OK lắm sự phụ ạ. Xin cho ý kiến, không rõ có đúng không?
Mã:Sub protectAllSheets() Dim Sh As Worksheet, pass As String On Error GoTo ExitSub pass = Application.InputBox("Nhap password de protect", Type:=2) If pass <> "False" Then For Each Sh In ActiveWorkbook.Worksheets Sh.Protect pass Next End If Exit Sub ExitSub: MsgBox "Ban nhap không dung password" End Sub
Sub ProtectAllSheets()
Dim Sh As Worksheet, pass As String
If ActiveWorkbook.ActiveSheet.ProtectContents Then GoTo Msg
pass = Application.InputBox("Nhap password de Protect", Type:=2)
If pass <> "False" Then
For Each Sh In ActiveWorkbook.Worksheets
Sh.Protect pass
Next
End If
Exit Sub
Msg:
MsgBox "Sheet da duoc protect roi"
End Sub
Nếu anh protect sheet không password (tức không gõ gì vào InputBox) thì đương nhiên khi anh Unprotect bằng tay, Excel sẽ chẳng hỏi gì cảBổ sung: Chỉ có điều, sau khi dùng code protect theo đoạn hí hoáy đại của qua, có số nhận xét sau:
Sau khi chạy code (protect) trên, có ghi lại pass thế khi dùng thủ công unprotect sao nó không đòi mình đưa pass vào vậy sư phụ.
Anh thử lại với file mới, với 2 đoạn code em ghi ở trên xemDạ qua có thử gõ pass vào: KTGG rồi. Nhưng không rõ sao Unprotect bằng tay, Excel sẽ chẳng hỏi gì cả. Buồn quá, hụ hụ hụ.
[COLOR="#0000CD"]Sub ProtectAllSheets()
Dim Sh As Worksheet, pass As String
If ActiveWorkbook.ActiveSheet.ProtectContents Then GoTo Msg
pass = Application.InputBox("Nhap password de Protect", Type:=2)
If pass <> "False" Then
For Each Sh In ActiveWorkbook.Worksheets
Sh.Protect pass
Next
End If
Exit Sub
Msg:
MsgBox "Sheet da duoc protect roi"
End Sub
[/COLOR]
Thì anh cứ copy 2 đoạn code ấy vào chung Module là được rồi ---> Cần dùng thì cứ bấm Alt + F8, chọn tên sub rồi chạy thôiCó cách nào cho 2 đoạn code trên vào chung không Thầy? Đúng là được voi đòi tiên.
Chỉ cần chịu khó sửa tùm lum thế cũng đủ "lên tay" rồi anh à!Giờ mới biết làm code khá công phu, tưởng rằng nháy nháy, hí hoáy sửa đoạn code unprotect trên thay vào dòng chữ protect là xong chứ..
Đương nhiên được!Chắc là em hơi vô duyên khi xen vào đây!
Thưa các thầy cho em hỏi được không ạ? Nếu mình đã chọn nhiều Sheet trong Workbook rồi giờ muốn dùng mã VBA để lấy tên các sheet đã được chọn thì thế nào ạ!
liệu có thể biết được không thưa các thầy?
Sub Test()
Dim Sh As Worksheet
For Each Sh In ActiveWindow.SelectedSheets
MsgBox Sh.Name
Next
End Sub