Ngăn chận người sử dụng thực số hành động định Mặc dù Excel có hỗ trợ việc bảo vệ cho bảng tính (Protect Sheet, Protect Workbook), công cụ thô sơ không bao gồm việc cho phép người sử dụng số đặc quyền hạn chế - trừ bạn làm theo chiêu sau Excel: Mỗi ngày tuyệt chiêu Bạn quản lý việc tương tác với bảng tính bạn cách giám sát đáp ứng kiện Các kiện (event), hành động xảy bạn làm việc với bảng tính Sheet Những kiện thường bao gồm việc mở (open) bảng tính, lưu (save) nó, đóng (close) Bạn bảo Excel chạy mã Visual Basic (macro) cách tự động xảy kiện Tuy nhiên, bạn nên biết rằng, người sử dụng vượt qua tất mã bảo vệ Visual Basic bẳng cách vô hiệu hóa việc thực thi 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 Disable all macros with notification [E2003: mức Medium], mở bảng tính có chứa macro, Excel xuất hộp thông báo cho phép người sử dụng có hội để tắt macro Nếu đặt mức độ an toàn Disable all macros without notification [E2003: mức High], Excel ngăn không cho chạy tất macro có bảng tính Nói cách khác, cần phải dùng macro có bảng tính, người sử dụng chọn mức an toàn thích hợp phép sử dụng macro Ngăn chận việc lưu lại bảng tính với tên khác Bạn thiết lập thuộc tính "Read only" cho bảng tính nào, cách nhấn Office ➝ Save, nhấn nút Tools, chọn General Options [E2003: File | Save As | Tools | General Options] kích hoạt hộp kiểm Read only recommended Việc ngăn chận người sử dụng lưu lại thay đổi bảng tính, họ lưu lại bảng tính với tên khác lưu vào nơi khác Tuy nhiên, điều bạn muốn không cho lưu lại bảng tính bạn với tên khác, không cho lưu vào nơi khác Nói cách khác, bạn muốn người khác lưu lại bảng tính với tên gốc nó, không chép Điều đặc biệt hữu dụng có nhiều người sử dụng chung bảng tính, bạn không muốn ổ cứng đầy dẫy bảng tính này, cho dù với tên khác, hay thư mục khác Sự kiện Before Save mà nói đến có từ thời Excel 97 Đúng tên gọi nó, kiện xuất trước bảng tính lưu, cho phép bạn can thiệp kịp thời việc lưu lại bảng tính, đưa cảnh báo, không cho Excel lưu bảng tính Trước tự thực điều vào bảng tính, chắn chắn bạn lưu lại bảng tính bạn Bởi việc đưa đoạn code sau vào môt bảng tính chưa lưu, gây cho bạn nhiều rắc rối Để đưa đoạn code sau vào bảng tính, bạn chọn Develope ➝ Visual Basic (hoặc nhấn Alt+F11), nhấp đúp chuột vào mục ThisWorkbook khung Project Explorer Nếu Ribbon bạn mục Develope, bạn vào Excel Options ➝ Popular, đánh dấu vào tùy chọn Show Develope tab in the Ribbon, nhấn OK [E2003, nhấn phải chuột vào biểu tượng Excel bên trái menu File menu, chọn mục View Code, minh họa hình bên dưới]: Sử dụng Quick access menu (trong Excel 2003) để nhập code áp dụng cho workbook Bạn nhập đoạn code sau vào cửa sổ VBE Sau nhập xong, nhấn Alt+Q để trở Excel, lưu lại bảng tính: PHP Code: Private Sub workbook_BeforeSave(ByVal SaveAsUI As Boolean, _ Cancel As Boolean) Dim lReply As Long If SaveAsUI = True Then lReply = MsgBox("Sorry, you are not allowed to save this workbook as another name." _ & "Do you wish to save this workbook?", vbQuestion + vbOKCancel) Cancel = (lReply = vbCancel) If Cancel = False Then Me.Save Cancel = True End If End Sub Thử tí Bạn nhấn Ctrl+S (hoặc gọi lệnh Save) xem Bảng tính bạn lưu bình thường Bây bạn nhấn F12 (hoặc gọi lệnh Save as), bạn gặp cảnh báo, nói bạn lưu lại bảng tính tên khác, bạn vô hiệu hóa macro Nói thêm, bạn lưu bảng tính có chứa macro code Excel 2007, bạn nhắc nhở bạn phải lưu file dạng cho phép macro hoạt động (macro-enable workbook), có phần mở rộng *.xlsm, lưu dạng bình thường (*.xlsx) Ngăn chận việc in bảng tính Đôi bạn phải rời bàn làm việc mà quên tắt máy (chuyện chuyện thường), cho dù bạn làm công việc ngăn chận việc có chép bảng tính bạn ngoài, nói trên, bạn lo xa hơn, muốn bảng tính không bị in bạn vắng mặt Nếu thật bạn muốn vậy, bạn dùng kiện Before Print Hãy nhập đoạn code sau cửa sổ VBE: PHP Code: 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 Excel lưu lại Từ bây giờ, có có muốn lệnh in bảng tính này, xảy Dòng lệnh MsgBox đoạn code tùy chọn, bạn nên sử dụng nó, để lại thông tin đó, để người khác không tưởng lầm máy in họ bị hư, chương trình Excel có lỗi! Nếu bạn muốn ngăn chận in phần bảng tính, ví dụ không cho in Sheet1 Sheet2, bạn sử dụng đoạn code sau: PHP Code: 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 thêm vào Sheet có bảng tính bạn Chỉ việc nhập tên vào hàng có lệnh Case, tách biệt Sheet với Sheet khác dấu phẩy, nhớ nhập tên Sheet cặp dấu nháy kép Trong trường hợp bạn muốn ngăn chận không cho in Sheet mà thôi, bạn cần nhập tên Sheet (trong cặp nháy kép) sau chữ Case, không cần gõ dấu phẩy Ngăn chận việc chèn thêm Sheet vào bảng tính Excel có chức Protect Workbook, không cho phép thay đổi cấu trúc bảng tính thêm, xóa, di chuyển, hay đổi tên Sheet Tuy nhiên, bạn muốn ngăn chận việc thêm Sheet thôi, việc khác cho phép Đoạn code sau giúp bạn làm việc đó: PHP Code: 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ó chèn thêm Sheet vào bảng tính, trước tiên Excel xuất hộp cảnh cáo: "Xin lỗi, bạn thêm Sheet vào bảng tính này", lập tức, Excel xóa Sheet thêm vào nút OK hộp cảnh báo nhấn Công dụng dòng lệnh Application.DisplayAlerts = False không hiển thị hộp cảnh báo xác nhận việc xóa Sheet Excel Một cách khác để ngăn chận việc chèn thêm Sheet vào bảng tính bạn chọn Review Ribbon, chọn lệnh Protect Workbook nhóm Changes, 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] nhấn OK (có thể đặt password thích) Tuy nhiên, nói đầu bài, việc ngăn chận hết thao tác với Sheet bảng tính ... kép Trong trường hợp bạn muốn ngăn chận không cho in Sheet mà thôi, bạn cần nhập tên Sheet (trong cặp nháy kép) sau chữ Case, không cần gõ dấu phẩy Ngăn chận việc chèn thêm Sheet vào bảng tính Excel. . .Sử dụng Quick access menu (trong Excel 2003) để nhập code áp dụng cho workbook Bạn nhập đoạn code sau vào cửa sổ VBE Sau nhập xong, nhấn Alt+Q để trở Excel, lưu lại bảng tính:... khác không tưởng lầm máy in họ bị hư, chương trình Excel có lỗi! Nếu bạn muốn ngăn chận in phần bảng tính, ví dụ không cho in Sheet1 Sheet2, bạn sử dụng đoạn code sau: PHP Code: Private Sub workbook_BeforePrint(Cancel