Cách khóa sheet ẩn trong excel

Ẩn hiện sheet trong excel là thao tác mà người dùng thường xuyên sử dụng khi làm việc với phần mềm excel, chúng ta đã tìm hiểu cách ẩn hiện sheet excel cơ bản, và bây giờ chúng ta sẽ đi tìm hiểu cách ẩn sheet excel nâng cao hơn, đó là không cho người dùng unhide theo cách thông thường.

Cụ thể khi ẩn một sheet thì chỉ cần chọn sheet đó và nhấn Hide

Và muốn hiện sheet trở lại thì bạn chọn Unhide

Chọn sheet cần bỏ ẩn và nhấn OK

Nhưng nếu muốn người dùng không thể hiện sheet mà bạn đã ẩn theo cách thông thường, hay bạn muốn dấu sheet đó đi hãy thực hiện như sau

Vào Developer - Visual Basic hoặc nhấn phím tắt Alt + F11

Chọn sheet cần ẩn trong mục VBAProject sau đó ở thuộc tính Visible các bạn chọn 2-xlSheetVeryHidden

Lúc này sheet 1 đã bị ẩn, khi bạn click phải vào một sheet khác thì chữ Unhide đã ẩn và không chọn được

Nếu muốn sheet đó quay trở lại thì làm tương tự và chọn -1-xlSheetVisble

Sheet 1 đã quay trở lại

Vì sử dụng thuộc tính của vba nên để file có hiệu lực thì bạn nên lưu dưới dịnh dạng là Excel Macro-Enabled Workbook nhé

Chúc các bạn thành công

  • #1

Ciao cả nhà,

Mình phải làm 1 báo cáo tổng hợp trong đó có 1 sheet tổng hợp và các sheet dữ liệu. Mình đang gặp các vấn đề sau rất mong sự giúp dỡ của anh em:

- Cách 1: Có cách nào chuyển dữ liệu từ sheet tổng hợp ra file word. Mình đã thử = lệnh Copy/Paste, nhưng vì báo cáo bao gồm nhiều bảng dữ liệu và đồ thị khi chuyển ra file word thì định dạng rất xấu. Vì báo cáo có nhiều trang nên nếu chỉnh lại format thì rất mất thời gian vì tuần nào cũng báo cáo.

- Cách 2: Vì lí do trên nên mình định gửi báo cáo = file excel luôn, tuy nhiên lại vướng 2 vấn đề sau:

+ Mình muốn hide các sheet dữ liệu và khóa luôn ko muốn cho ai unhide được --> Ai có cách nào giúp với;

+ Sheet báo cáo có rất nhiều công thức để lấy các dữ liệu từ các sheet kia, do đó mình muốn ko ai thay đổi hoặc ko muốn ai nhìn thấy.

Mình đang dùng Office 2007.

Anh em cao thủ giúp mình xử lý các vấn đề trên với nhé.

Thanks.

  • #2

Cách ổn nhất là bạn gửi báo cáo bằng File chỉ có value không còn công thức, lo gì ai xem được. Mọi cố gắng để ẩn Sheet, đặt pass.... chỉ có thể làm khó người không biết thôi.
Còn tôi thì nghĩ rằng có thể chia sẻ kiến thức thì nên làm và chắc gì các công thức của bạn đã là tối ưu, biết đâu bạn lại được góp ý để File của bạn hoàn thiện hơn nữa.
Vài lời chia sẻ cùng bạn

  • #3

Thật ra ko phải là mình ko muốn chia sẻ kiến thức, bởi vì file dữ liệu chứa rất nhiều thông số của nhiều năm để mình vẽ các trend giúp nhận dạng, xem xu hướng thế nào. Nếu ai đó vô tình/ cố ý thay đổi các dữ liệu thì lúc đó ko thể kiểm tra được là value của ngày nào thay đổi.
Mặt khác file của mình có tới hơn 20 sheet dữ liệu, do đó ko thể kiểm soát được các số liệu nếu ai đó thay đổi đi vài dòng.

  • #4

Ciao cả nhà,

Mình phải làm 1 báo cáo tổng hợp trong đó có 1 sheet tổng hợp và các sheet dữ liệu. Mình đang gặp các vấn đề sau rất mong sự giúp dỡ của anh em:

- Cách 1: Có cách nào chuyển dữ liệu từ sheet tổng hợp ra file word. Mình đã thử = lệnh Copy/Paste, nhưng vì báo cáo bao gồm nhiều bảng dữ liệu và đồ thị khi chuyển ra file word thì định dạng rất xấu. Vì báo cáo có nhiều trang nên nếu chỉnh lại format thì rất mất thời gian vì tuần nào cũng báo cáo.

- Cách 2: Vì lí do trên nên mình định gửi báo cáo = file excel luôn, tuy nhiên lại vướng 2 vấn đề sau:

+ Mình muốn hide các sheet dữ liệu và khóa luôn ko muốn cho ai unhide được --> Ai có cách nào giúp với;

+ Sheet báo cáo có rất nhiều công thức để lấy các dữ liệu từ các sheet kia, do đó mình muốn ko ai thay đổi hoặc ko muốn ai nhìn thấy.

Mình đang dùng Office 2007.

Anh em cao thủ giúp mình xử lý các vấn đề trên với nhé.

Thanks.

Vậy bạn nên xuất sheet nào đó cần báo cáo ra dạng *.pdf nhé.
Lúc đó khỏi sợ người ta nhìn hay "sờ mó" các sheet khác và cũng không biết bạn dùng hàm gì.

Lần chỉnh sửa cuối: 29/5/10

  • #5

Chỉ hướng cho bạn đi: Bạn đang ở sheet báo cáo. Vào Tools/ Option [Excel 2003]bỏ chọn sheet tabs: Như vậy sheet dữ liệu ẩn, chỉ còn sheet báo cáo xuất hiện thôi.
Tiếp theo bạn dùng code không cho hiện Tools. Sau đó bạn vào VBAProject đặt pass cho code. Vậy thì sheet dữ liệu không nhìn thấy.
Còn sheet báo cáo: Các cell chứa công thức bạn dùng pass khóa lại không cho thấy.
Bạn theo hướng này mà thử xem. Chịu khó tìm trên GPE có hết. Rất tiếc tôi không rành Excel 2007 nhưng nếu bạn gởi files Excel 2003 tôi giúp được.
Nhưng nói trước, chỉ dấu với người không rành Excel thôi, chứ như các sư phụ trên GPE này thì bó tay. Chúc vui.

  • #6

Chỉ hướng cho bạn đi: Bạn đang ở sheet báo cáo. Vào Tools/ Option [Excel 2003]bỏ chọn sheet tabs: Như vậy sheet dữ liệu ẩn, chỉ còn sheet báo cáo xuất hiện thôi.
Tiếp theo bạn dùng code không cho hiện Tools. Sau đó bạn vào VBAProject đặt pass cho code. Vậy thì sheet dữ liệu không nhìn thấy.
Còn sheet báo cáo: Các cell chứa công thức bạn dùng pass khóa lại không cho thấy.
Bạn theo hướng này mà thử xem. Chịu khó tìm trên GPE có hết. Rất tiếc tôi không rành Excel 2007 nhưng nếu bạn gởi files Excel 2003 tôi giúp được.
Nhưng nói trước, chỉ dấu với người không rành Excel thôi, chứ như các sư phụ trên GPE này thì bó tay. Chúc vui.

Nếu làm như bạn thì dùng cách sau lẹ hơn.
-Nhấn Alt+F11

Sau cùng đặt pass cho VBA là được.

Lần chỉnh sửa cuối: 29/5/10

  • #7

Sau cùng đặt pass cho VBA là được.

Pass VBA mà cr@ck tôi nghĩ có lẹ hơn mấy pass khác nữa đấy Doom à! ---> tôi chỉ cần 5s, hay nói thật chính xác thì chỉ.. trong tích tắc
Nói chung: mấy vụ khóa này chẳng có phương pháp nào hoàn hảo cả

  • #8

Pass VBA mà cr@ck tôi nghĩ có lẹ hơn mấy pass khác nữa đấy Doom à! ---> tôi chỉ cần 5s, hay nói thật chính xác thì chỉ.. trong tích tắc
Nói chung: mấy vụ khóa này chẳng có phương pháp nào hoàn hảo cả

Đây chỉ là khóa đối với người ngay và người chưa biết thôi Thầy à, cái này là con của bác Bill, Bác Bill tập hợp rất nhiều cao thủ trên thế giới mà khi cho ra đứa con nào thì hầu hết đều bị crack.
Muốn mở sheet ẩn theo cách này không cần crack VBA Pass cũng vẫn mở được.

  • #9

Để đơn giản ta chỉ cần gửi 1 tấm hình toàn bộ dữ liệu mà ta muốn gửi là ổn. Vì tấm hình thì chụp cũng dễ [chỉ cần nhấn Ctrl + Print Screen -> Paste ra Paint lưu lại là xong]. Thích chụp thằng nào thì chụp thằng nấy, rồi gửi báo cáo hình là xong. Cũng đẹp y như ta trình bày trên Excel thôi. Được không?
Thân.

  • #10

Để đơn giản ta chỉ cần gửi 1 tấm hình toàn bộ dữ liệu mà ta muốn gửi là ổn. Vì tấm hình thì chụp cũng dễ [chỉ cần nhấn Ctrl + Print Screen -> Paste ra Paint lưu lại là xong]. Thích chụp thằng nào thì chụp thằng nấy, rồi gửi báo cáo hình là xong. Cũng đẹp y như ta trình bày trên Excel thôi. Được không?
Thân.

Với cách này thì không ổn lắm. Nếu vùng dữ liệu lớn sẽ phải chụp nhiều lần rồi mới ghép lại, chỉnh sửa sẽ mất công hơn việc chuyển sang .pdf hoặc paste value

  • #11

Vâng, ý em nó chỉ là 1 đề xuất thôi!
Mọi người nói về file *.BDF. Vậy file *.bdf này là sao vậy? Giải thích cụ thể hơn được không? Ở trong Excel em thấy có đến mấy tuỳ chọn BDF lận BDF 4 [dBASE IV], BDF 3 [dBASE III], BDF 2 [dBASE II]. Vậy là sao? Và khi xuất ra BDF rồi thì mở nó bằng trình gì?
Thân.

  • #12

Vâng, ý em nó chỉ là 1 đề xuất thôi!
Mọi người nói về file *.BDF. Vậy file *.bdf này là sao vậy? Giải thích cụ thể hơn được không? Ở trong Excel em thấy có đến mấy tuỳ chọn BDF lận BDF 4 [dBASE IV], BDF 3 [dBASE III], BDF 2 [dBASE II]. Vậy là sao? Và khi xuất ra BDF rồi thì mở nó bằng trình gì?
Thân.

Xin lỗi do đánh máy nhằm, dạng *.pdf chứ không phải bdf
Hướng dẫn tại đây //www.youtube.com/watch?v=liihH3v0Nak

  • #13

Vâng, ý em nó chỉ là 1 đề xuất thôi!
Mọi người nói về file *.BDF. Vậy file *.bdf này là sao vậy? Giải thích cụ thể hơn được không? Ở trong Excel em thấy có đến mấy tuỳ chọn BDF lận BDF 4 [dBASE IV], BDF 3 [dBASE III], BDF 2 [dBASE II]. Vậy là sao? Và khi xuất ra BDF rồi thì mở nó bằng trình gì?
Thân.

Tôi nghĩ đã viết nhầm nhỏ trong bài này. Thực ra là *.pdf [định dạng database chuẩn]. Và mở thì có rất nhiều chương trình để mở
Thân

  • #14

Ciao cả nhà,

Mình phải làm 1 báo cáo tổng hợp trong đó có 1 sheet tổng hợp và các sheet dữ liệu. Mình đang gặp các vấn đề sau rất mong sự giúp dỡ của anh em:

- Cách 2: Vì lí do trên nên mình định gửi báo cáo = file excel luôn, tuy nhiên lại vướng 2 vấn đề sau:

+ Mình muốn hide các sheet dữ liệu và khóa luôn ko muốn cho ai unhide được --> Ai có cách nào giúp với;

+ Sheet báo cáo có rất nhiều công thức để lấy các dữ liệu từ các sheet kia, do đó mình muốn ko ai thay đổi hoặc ko muốn ai nhìn thấy.

Mình đang dùng Office 2007.

Thanks.

Nếu là Office2003 thì bạn xem File đính kèm.

  • #15

Hi nam2806. FIle bạn làm rất hay. Nhưng xem file mình chỉ biết sử dụng mà không biết cách làm như bạn. Bạn có thể chỉ dùm mình cách làm như bạn được không?
Thanks!

hi, bạn nam2806. file bạn làm rất hay. Mình xem thì mình chỉ biết sử dụng thôi. Bạn có thể chỉ cho mình và mọi người biết cách làm như bạn không?
Thank you so much!

Chỉnh sửa lần cuối bởi điều hành viên: 29/5/10

  • #16

Cảm ơn anh em đã hỗ trợ dù rằng kết quả ko như mình mong muốn.

Chuyển định dạng sang pdf thì dễ dàng rồi vì mình có pdf factory, tuy nhiên vì báo cáo của mình còn được các phòng khác lấy số liệu [chỉ ở trong sheet báo cáo, dài khoảng 20-30 trang], nên khi mình gửi qua pdf họ lại xin file dạng gốc để copy số liệu, bản vẽ thế là gửi file excel luôn để họ thích làm gì thì làm. Tuy nhiên về lâu dài thì ko ổn.

Thôi để mình tìm hướng khác vậy.

  • #17

Chào nam2806. Bạn có thể hướng dẫn cách làm của bạn cụ thể được không? Mình cũng như linhngoc là chỉ biết sử dụng thôi khi mở VBA ra thì chưa làm được Sheet1 được. Mong bạn hướng dẫn cụ thể nhé. Cảm ơn bạn nhiều.

  • #18

Cách ổn nhất là bạn gửi báo cáo bằng File chỉ có value không còn công thức, lo gì ai xem được. Mọi cố gắng để ẩn Sheet, đặt pass.... chỉ có thể làm khó người không biết thôi.
Còn tôi thì nghĩ rằng có thể chia sẻ kiến thức thì nên làm và chắc gì các công thức của bạn đã là tối ưu, biết đâu bạn lại được góp ý để File của bạn hoàn thiện hơn nữa.
Vài lời chia sẻ cùng bạn

Vấn đề ko phải là công thức, bởi vì mình biết chắc chắn các công thức của mình chỉ là thủ công, cơ bản.

Vấn đề là dữ liệu, vì có 1 số dữ liệu ko phải ai cũng xem được.

  • #19

Chào nam2806. Bạn có thể hướng dẫn cách làm của bạn cụ thể được không? Mình cũng như linhngoc là chỉ biết sử dụng thôi khi mở VBA ra thì chưa làm được Sheet1 được. Mong bạn hướng dẫn cụ thể nhé. Cảm ơn bạn nhiều.

Đầu tiên, bạn tạo một nút pass trên file báo cáo.
Bạn vào VBA xem tôi viết các sự kiện:
* Workbook_BeforeClose
Sheet1.Protect ["123"]--> trước khi đóng file GPE.xls, hãy bảo vệ sheet1 với pass "123"
* Workbook_Open: khi mở file GPE.xls
Sheet1.Visible = xlSheetVisible------------------> cho sheet1 hiển thị
Sheet1.Shapes["Rectangle 1"].Visible = msoTrue--> cho nút pass hiển thị
Sheet2.Visible = xlSheetVeryHidden --------------> cho các sheet2 đến 6 ẩn
Sheet3.Visible = xlSheetVeryHidden
Sheet4.Visible = xlSheetVeryHidden
Sheet5.Visible = xlSheetVeryHidden
Sheet6.Visible = xlSheetVeryHidden
Khi nhấn nút pass thì nó thực thi macro unhide như sau:
Sub UnHide[]
Application.Dialogs[28].Show--> hiện ra bảng cho ta nhập pass
If Sheet1.ProtectContents = True Then -----> nếu pass sai thì các sheet2 đến 6 vẫn còn ẩn.
Sheet2.Visible = xlSheetVeryHidden
Sheet3.Visible = xlSheetVeryHidden
Sheet4.Visible = xlSheetVeryHidden
Sheet5.Visible = xlSheetVeryHidden
Sheet6.Visible = xlSheetVeryHidden
Else ----------------------------------------> nếu pass đúng thì sheet2 đến 6 hiện ra
Sheet2.Visible = xlSheetVisible
Sheet3.Visible = xlSheetVisible
Sheet4.Visible = xlSheetVisible
Sheet5.Visible = xlSheetVisible
Sheet6.Visible = xlSheetVisible
Sheet1.Select--------------------------> và cuối cùng sheet1 được chọn.
End If
End Sub

Mình trình độ cũng ngắn, nhưng đây là nhu cầu thực tế nên cố gắng mày mò để đáp ứng công việc. Thực ra, mình chủ yếu dựa vào record macro, lắp ghép các đoạn mã lại theo ý mình chứ có lập trình gì cao siêu đâu. Thân!

Lần chỉnh sửa cuối: 29/5/10

  • #20

Đầu tiên, bạn tạo một nút pass trên file báo cáo.
Bạn vào VBA xem tôi viết các sự kiện:
* Workbook_BeforeClose
Sheet1.Protect ["123"]--> trước khi đóng file GPE.xls, hãy bảo vệ sheet1 với pass "123"
* Workbook_Open: khi mở file GPE.xls
Sheet1.Visible = xlSheetVisible------------------> cho sheet1 hiển thị
Sheet1.Shapes["Rectangle 1"].Visible = msoTrue--> cho nút pass hiển thị
Sheet2.Visible = xlSheetVeryHidden --------------> cho các sheet2 đến 6 ẩn
Sheet3.Visible = xlSheetVeryHidden
Sheet4.Visible = xlSheetVeryHidden
Sheet5.Visible = xlSheetVeryHidden
Sheet6.Visible = xlSheetVeryHidden
Khi nhấn nút pass thì nó thực thi macro unhide như sau:
Sub UnHide[]
Application.Dialogs[28].Show--> hiện ra bảng cho ta nhập pass
If Sheet1.ProtectContents = True Then -----> nếu pass sai thì các sheet2 đến 6 vẫn còn ẩn.
Sheet2.Visible = xlSheetVeryHidden
Sheet3.Visible = xlSheetVeryHidden
Sheet4.Visible = xlSheetVeryHidden
Sheet5.Visible = xlSheetVeryHidden
Sheet6.Visible = xlSheetVeryHidden
Else ----------------------------------------> nếu pass đúng thì sheet2 đến 6 hiện ra
Sheet2.Visible = xlSheetVisible
Sheet3.Visible = xlSheetVisible
Sheet4.Visible = xlSheetVisible
Sheet5.Visible = xlSheetVisible
Sheet6.Visible = xlSheetVisible
Sheet1.Select--------------------------> và cuối cùng sheet1 được chọn.
End If
End Sub

Mình trình độ cũng ngắn, nhưng đây là nhu cầu thực tế nên cố gắng mày mò để đáp ứng công việc. Thực ra, mình chủ yếu dựa vào record macro, lắp ghép các đoạn mã lại theo ý mình chứ có lập trình gì cao siêu đâu. Thân!

Bạn dùng vòng lặp hoặc mãng code sẽ gọn hơn nhiều

Lần chỉnh sửa cuối: 31/5/10

Chủ Đề