Thủ thuật ngăn chặn thêm sheet trong bảng tính excel, không cho in bảng tính,… | Thủ thuật tin học

Mặc định trên Excel có hỗ trợ tính năng bảo vệ cho bảng tính (như Protect SheetProtect Workbook), nhưng các công cụ chưa thể đáp ứng được các nhu cầu cụ thể của người sử dụng, chẳng hạn cho phép lưu nhưng không cho phép thêm sheet mới, cho lưu nhưng không cho phép in,…Do vậy bài viết này xin chia sẻ thủ thuật ngăn chặn thêm sheet trong bảng tính excel, không cho in bảng tính, không cho save as bảng tính excel.

Bạn có thể quản lý việc tương tác với các bảng tính của bạn bằng cách giám sát và đáp ứng các sự kiện. Các sự kiện (event), là những hành động xảy ra khi bạn làm việc với các bảng tính hoặc các Sheet. Những sự kiện này thường bao gồm việc mở (open) một bảng tính, lưu (save) nó, và đóng (close) nó. Bạn có thể bảo Excel chạy những mã Visual Basic (macro) một cách tự động khi xảy ra bất kỳ một trong những sự kiện như thế.

Tuy nhiên, bạn nên biết rằng, người sử dụng có thể vượt qua tất cả những mã bảo vệ bởi Visual Basic bẳng cách vô hiệu hóa việc thực thi các macro: Nhấn nút Office ➝ Excel Opions ➝ Trust Center ➝ Trust Center Setting ➝ Macro Settings [E2003: Tools | Macro | Security]. Nếu đặt mức độ an toàn là Disable all macros with notification [E2003: mức Medium], mỗi khi mở một bảng tính có chứa macro, Excel sẽ xuất hiện một hộp thông báo và cho phép người sử dụng có cơ hội để tắt các macro. Nếu đặt mức độ an toàn là Disable all macros without notification [E2003: mức High], Excel sẽ ngăn không cho chạy tất cả các macro có trong bảng tính. Nói cách khác, khi cần phải dùng các macro có trong bảng tính, người sử dụng sẽ chọn một mức an toàn thích hợp để cho phép sử dụng các macro.

Ngăn chặn việc chèn thêm Sheet vào một bảng tính

Excel có chức năng Protect Workbook, không cho phép thay đổi cấu trúc của bảng tính như thêm, xóa, di chuyển, hay đổi tên các Sheet. Tuy nhiên, có thể bạn chỉ muốn ngăn chận việc thêm Sheet thôi, còn những việc khác thì vẫn cho phép. Đoạn code sau đây giúp bạn làm việc đó:

VBA Excel Code:

1

2

3

4

5

6

7

Private

 

Sub

 

Workbook_NewSheet

(

ByVal

 

Sh

 

As

 

Object

)

Application

.

DisplayAlerts

 = 

False

MsgBox

 

“Sorry, you cannot add any more sheets to this workbook”

,

 

_

vbInformation

Sh

.

Delete

Application

.

DisplayAlerts

 = 

True

End

 

Sub

Khi có ai đó chèn thêm một Sheet mới vào trong bảng tính, trước tiên Excel sẽ xuất hiện hộp cảnh cáo: “Xin lỗi, bạn không thể thêm bất kỳ Sheet nào vào trong bảng tính này”, rồi ngay lập tức, Excel sẽ xóa cái Sheet mới thêm vào khi nút OK trong hộp cảnh báo được nhấn. Công dụng của dòng lệnh Application.DisplayAlerts = False là không hiển thị hộp cảnh báo xác nhận việc xóa một Sheet nào đó trong Excel.

Khi có ai đó chèn thêm một Sheet mới vào trong bảng tính, trước tiên Excel sẽ xuất hiện hộp cảnh cáo: “Xin lỗi, bạn không thể thêm bất kỳ Sheet nào vào trong bảng tính này”, rồi ngay lập tức, Excel sẽ xóa cái Sheet mới thêm vào khi nút OK trong hộp cảnh báo được nhấn. Công dụng của dòng lệnh Application.DisplayAlerts = False là không hiển thị hộp cảnh báo xác nhận việc xóa một Sheet nào đó trong Excel.

Một cách khác để ngăn chận việc chèn thêm Sheet vào bảng tính là bạn chọn Review trên thanh Ribbon, chọn lệnh Protect Workbooktrong nhóm Changes, rồi chọn lệnh Protect Structure and Windows [E2003: Tools | Protection | Protect Workbook… đánh dấu kiểm vào tùy chọn Structure] và nhấn OK (có thể đặt password nếu thích). Tuy nhiên, như đã nói ở đầu bài, việc này sẽ ngăn chận hết mọi thao tác với các Sheet trong bảng tính.

Ngăn chặn việc in một bảng tính

Đôi khi bạn phải rời bàn làm việc đi đâu đó mà quên tắt máy (chuyện này là chuyện thường), cho dù bạn đã làm công việc ngăn chận việc có ai đó chép bảng tính của bạn ra ngoài, như đã nói ở trên, có thể bạn còn lo xa hơn, muốn rằng bảng tính này cũng sẽ không bị in ra khi bạn vắng mặt. Nếu thật sự bạn muốn như vậy, bạn hãy dùng sự kiện Before Print. Hãy nhập đoạn code sau trong cửa sổ VBE:

VBA excel Code:

1

2

3

4

Private

 

Sub

 

workbook_BeforePrint

(

Cancel

 

As

 

Boolean

)

Cancel

 = 

True

MsgBox

 

“Sorry, you cannot Print from this workbook”

,

 

vbInformation

End

 

Sub

Nhấn Ctrl+Q để quay về Excel và lưu lại. Từ bây giờ, nếu có ai có muốn ra lệnh in bảng tính này, sẽ không có gì xảy ra. Dòng lệnh MsgBox ở đoạn code trên chỉ là một tùy chọn, nhưng bạn nên sử dụng nó, vì ít nhất thì nó cũng để lại một thông tin gì đó, để người khác sẽ không tưởng lầm rằng máy in của họ bị hư, hoặc là chương trình Excel có lỗi!

Nếu bạn chỉ muốn ngăn chận in một phần nào đó trong bảng tính, ví dụ không cho in Sheet1 và Sheet2, bạn sử dụng đoạn code sau:

VBA Excel Code:

1

2

3

4

5

6

7

8

Private

 

Sub

 

workbook_BeforePrint

(

Cancel

 

As

 

Boolean

)

Select

 

Case

 

ActiveSheet

.

Name

Case

 

“Sheet1”

,

 

“Sheet2”

Cancel

 = 

True

MsgBox

 

“Sorry, you cannot print this sheet from this workbook”

,

 

_

vbInformation

End

 

Select

End

 

Sub

Dĩ nhiên bạn có thể thêm vào bất kỳ Sheet nào có trong bảng tính của bạn. Chỉ việc nhập tên của nó vào trong hàng có lệnh Case, và tách biệt Sheet này với Sheet khác bằng dấu phẩy, và nhớ nhập tên Sheet trong một cặp dấu nháy kép. Trong trường hợp bạn chỉ muốn ngăn chận không cho in một Sheet mà thôi, bạn chỉ cần nhập tên của Sheet đó (trong cặp nháy kép) sau chữ Case, và không cần gõ dấu phẩy.

Dĩ nhiên bạn có thể thêm vào bất kỳ Sheet nào có trong bảng tính của bạn. Chỉ việc nhập tên của nó vào trong hàng có lệnh Case, và tách biệt Sheet này với Sheet khác bằng dấu phẩy, và nhớ nhập tên Sheet trong một cặp dấu nháy kép. Trong trường hợp bạn chỉ muốn ngăn chận không cho in một Sheet mà thôi, bạn chỉ cần nhập tên của Sheet đó (trong cặp nháy kép) sau chữ Case, và không cần gõ dấu phẩy.

Ngăn chặn việc lưu lại bảng tính với một tên khác