Code khóa 1 sheet

Liên hệ QC

manhdan

Thành viên mới
Tham gia
17/8/07
Bài viết
21
Được thích
3
Chào các anh, chị.

Em có nhu cầu muốn làm 1 file excel trong đó có 2 sheet, 1 sheet bị khóa và cần password để mở. Em hình dung file sẽ thế này:

Khi mở file thì mặc định hiện sheet 1, nếu bấm vào sheet 2 thì sẽ cần nhập đúng password mới vào được.

hoặc: Khi mở file thì hiện password, nếu nhập đúng và bấm OK thì hiện 2 sheet bình thường, nếu sai pass hoặc chỉ bấm OK thì hiện file chỉ có sheet 1.

Nhờ các anh chị giúp em với ạ, cảm ơn các anh, chị nhiều :)
 
Chào các anh, chị.

Em có nhu cầu muốn làm 1 file excel trong đó có 2 sheet, 1 sheet bị khóa và cần password để mở. Em hình dung file sẽ thế này:

Khi mở file thì mặc định hiện sheet 1, nếu bấm vào sheet 2 thì sẽ cần nhập đúng password mới vào được.

hoặc: Khi mở file thì hiện password, nếu nhập đúng và bấm OK thì hiện 2 sheet bình thường, nếu sai pass hoặc chỉ bấm OK thì hiện file chỉ có sheet 1.

Nhờ các anh chị giúp em với ạ, cảm ơn các anh, chị nhiều :)
Không rõ mục đích của bạn là gì? Không rõ "sheet bị khóa" là như thế nào? Nếu sheet bị khóa là sheet vẫn cho nhìn thấy nhưng không cho sửa thì Excel có sẵn chức năng Protect Sheet. Nếu "sheet bị khóa" nghĩa là nó bị tàng hình thì cách làm như sau: File có 2 sheet. Tạo code để khi mở file xuất hiện hộp thoại Input Box, nếu nhập đúng "MyPassword" thì vào file thông thường, nếu nhập khác hoặc để rỗng thì vào file, đồng thời cho code làm ẩn 1 sheet kia đi. Nếu sheet kia là nhạy cảm thì khi người dùng mà không Enable Macro thì hỏng bét.
 
Upvote 0
Chào các anh, chị.

Em có nhu cầu muốn làm 1 file excel trong đó có 2 sheet, 1 sheet bị khóa và cần password để mở. Em hình dung file sẽ thế này:

Khi mở file thì mặc định hiện sheet 1, nếu bấm vào sheet 2 thì sẽ cần nhập đúng password mới vào được.

hoặc: Khi mở file thì hiện password, nếu nhập đúng và bấm OK thì hiện 2 sheet bình thường, nếu sai pass hoặc chỉ bấm OK thì hiện file chỉ có sheet 1.

Nhờ các anh chị giúp em với ạ, cảm ơn các anh, chị nhiều :)
vậy thì thử cái này xem sao
Option Explicit
Sub khoa()
Const A As Variant = "a123"
If A = InputBox("Nhap Mat Khau") Then
ThisWorkbook.Unprotect Password:="A"
Sheets(2).Unprotect Password:="A"
Sheets(2).Visible = True
End If
End Sub

Option ExplicitConst A As Variant = "a123"
Private Sub Workbook_Open()
ThisWorkbook.Unprotect Password:="A"
Sheets(2).Protect Password:="A"
Sheets(2).Visible = False
ThisWorkbook.Protect Password:="A"
End Sub
muốn đổi pass bằng cái gì thay cái màu đỏ đỏ
 

File đính kèm

  • 123456.xlsm
    19.2 KB · Đọc: 252
Lần chỉnh sửa cuối:
Upvote 0
vậy thì thử cái này xem sao
Option Explicit
Sub khoa()
Const A As Variant = "a123"
If A = InputBox("Nhap Mat Khau") Then
ThisWorkbook.Unprotect Password:="A"
Sheets(2).Unprotect Password:="A"
Sheets(2).Visible = True
End If
End Sub
Option ExplicitConst A As Variant = "a123"
Private Sub Workbook_Open()
ThisWorkbook.Unprotect Password:="A"
Sheets(2).Protect Password:="A"
Sheets(2).Visible = False
ThisWorkbook.Protect Password:="A"
End Sub
muốn đổi pass bằng cái gì thay cái màu đỏ đỏ
Ở dưới mà cứ Password:="A" thì bạn thay "cái màu đỏ đỏ" cũng có tác dụng gì đâu, password vẫn cứ là "A" thôi.
 
Upvote 0
Upvote 0
Nếu có tác dùng thì đoạn Const A As Variant = "a123" để làm giống gì vậy bạn?
-----------------------

Vậy nếu tôi muốn đổi pass thành "ndu" thì thay thế nào?
À, hóa ra là có 3 cái ổ khóa: Khóa nhà là "a123". Vào trong nhà rồi, nếu muốn vào phòng thì lại phải mở khóa bằng chữ "A", vào phòng muốn mở tủ thì lại phải mở khóa bằng chữ "A" tiếp. Không biết anh chàng này "cố tình hay cố ý" mà lại khai báo 1 hằng A rồi lại đặt pass protect workbook và pass protect sheet là chữ "A" nữa. Hóa ra 2 cái thằng A này chẳng bà con chi với nhau cả. Hic...
 
Upvote 0
Em hiểu "A" là pass protect chỉ dùng để tránh unhide sheet thôi, chẳng liên quan đến khai báo biến A của pass cả.

Có một vấn đề là nếu máy không bật Enable macro lên là file sẽ hiện cả 2 sheet mà không tự động hide sheet cần ẩn đi, có cách nào khắc phục được không hả các anh?
 
Upvote 0
Không rõ mục đích của bạn là gì? Không rõ "sheet bị khóa" là như thế nào? Nếu sheet bị khóa là sheet vẫn cho nhìn thấy nhưng không cho sửa thì Excel có sẵn chức năng Protect Sheet. Nếu "sheet bị khóa" nghĩa là nó bị tàng hình thì cách làm như sau: File có 2 sheet. Tạo code để khi mở file xuất hiện hộp thoại Input Box, nếu nhập đúng "MyPassword" thì vào file thông thường, nếu nhập khác hoặc để rỗng thì vào file, đồng thời cho code làm ẩn 1 sheet kia đi. Nếu sheet kia là nhạy cảm thì khi người dùng mà không Enable Macro thì hỏng bét.

Em không dùng Protect sheet vì protect sheet thì vẫn nhìn được dữ liệu trong sheet cần ẩn. Đúng là dùng macro thì cũng không ổn khi người dùng Disable macro, nếu chuyển sang VBA thì được không anh nhỉ?
 
Upvote 0
Em không dùng Protect sheet vì protect sheet thì vẫn nhìn được dữ liệu trong sheet cần ẩn. Đúng là dùng macro thì cũng không ổn khi người dùng Disable macro, nếu chuyển sang VBA thì được không anh nhỉ?
Thế bạn hiểu dùng macrodùng VBA là khác nhau à? Nói chung các phương pháp bảo vệ workbook và worksheet bằng VBA chỉ mang tính tương đối thôi, với người rành code một chút thì việc bảo vệ này chẳng là gì cả.
 
Upvote 0
Em vừa tìm hiểu thêm trên 4rum thì đúng là các biện pháp đặt code, pass file... chỉ tương đối vì có thể bị phá dễ dàng, hic **~**

Để tránh người dùng khác không thấy sheet ẩn nếu disable macro em có sửa lại file đang dùng, thêm nút Close để mình chủ động ẩn và protect sheet khi đóng file. Nếu thêm pass View code thì cũng tốt hơn chút, em gửi các anh chị khác nếu có cùng nhu cầu tham khảo:
 

File đính kèm

  • An sheet.xls
    49 KB · Đọc: 143
Lần chỉnh sửa cuối:
Upvote 0
PHP:
Sub BaoCopyAndPaste_NXT()
On Error Resume Next
'Mo khoa 
sheetSheet12.Unprotect ("1")

'Chon vung copy va paste    
Sheet12.Range("E11:V400").FormulaR1C1 = Sheet12.Range("E10:V10").FormulaR1C1    
Sheet12.Range("E11:V400").Value = Sheet12.Range("E11:V400").Value

'Khoa sheet lai
Sheet12.Protect ("1")

End Sub

Chào A/C và các bạn! Em có đoạn code trên chỗ
"Khoa sheet lai
Sheet12.Protect ("1")".


Em muốn khi khóa sheet lại thì bảng tính vẫn cho phép làm những việc sau:
DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingColumns:=True, AllowFiltering:=True


Hiện tại Em đã cho thử cho thêm đoạn code cần thực hiện thêm vào phía sau chỗ Sheet12.Protect ("1") .... nhưng nó báo lỗi. Mong A/C và các bạn chỉ giúp.
 
Lần chỉnh sửa cuối:
Upvote 0
PHP:
Sub BaoCopyAndPaste_NXT()
On Error Resume Next
'Mo khoa
sheetSheet12.Unprotect ("1")

'Chon vung copy va paste   
Sheet12.Range("E11:V400").FormulaR1C1 = Sheet12.Range("E10:V10").FormulaR1C1   
Sheet12.Range("E11:V400").Value = Sheet12.Range("E11:V400").Value

'Khoa sheet lai
Sheet12.Protect ("1")

End Sub

Chào A/C và các bạn! Em có đoạn code trên chỗ
"Khoa sheet lai
Sheet12.Protect ("1")".


Em muốn khi khóa sheet lại thì bảng tính vẫn cho phép làm những việc sau:
DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingColumns:=True, AllowFiltering:=True



Hiện tại Em đã cho thử cho thêm đoạn code cần thực hiện thêm vào phía sau chỗ Sheet12.Protect ("1") .... nhưng nó báo lỗi. Mong A/C và các bạn chỉ giúp.

Em chỉnh lại code như sau : Sheet12.Protect AllowFiltering:=True và tương tự cho mấy cái còn lại.
 
Upvote 0
Web KT

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

Back
Top Bottom