Trợ giúp code bỏ hàng loạt unprotect sheet

Liên hệ QC

Người Đưa Tin

Hạt cát sông Hằng
Thành viên danh dự
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.
 
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.
Anh dùng code này thử (với điều kiện toàn bộ các sheet đều chung 1 password)
PHP:
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
 
Upvote 0
Cám ơn sư phụ ndu96081631 nhe, code thật tuyệt, thật chuẩn. Chạy vèo vèo.


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
 
Lần chỉnh sửa cuối:
Upvote 0
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ụ.
 
Upvote 0
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
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?)
PHP:
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
Tức là:
- Nếu sheet chưa protect thì tiến hành protect (hỏi pass là gì)
- Nếu sheet đã protect rồi thì ra thông báo "Sheet đã được protect rồi"
------------------------------
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ụ.
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ả
 
Upvote 0
Dạ 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ụ.
 
Upvote 0
Đã test lại đoạn code protect của sư phụ ndu96081631, thật tuyệt

Mã:
[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]

Sau đó, thử Unprotect bằng tay, Excel sẽ hỏi đây:

attachment.php


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ứ.

Có 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.
 

File đính kèm

  • Code_verygood.jpg
    Code_verygood.jpg
    22 KB · Đọc: 109
Upvote 0
Có 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.
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ôi
----------------------
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ứ..
Chỉ cần chịu khó sửa tùm lum thế cũng đủ "lên tay" rồi anh à!
 
Upvote 0
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?
 
Upvote 0
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?
Đương nhiên được!
Xem code này bạn sẽ hiểu liền
PHP:
Sub Test()
  Dim Sh As Worksheet
  For Each Sh In ActiveWindow.SelectedSheets
    MsgBox Sh.Name
  Next
End Sub
 
Upvote 0
Cảm ơn thầy!
vậy mà lâu nay em không biết!!!!!!!!!!!!!!!!!!1@$@!^%
 
Upvote 0
Web KT

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

Back
Top Bottom