• Thứ Tư, 18/03/2009 10:55 (GMT+7)

    Cách giấu/hiển thị các sheet trong bảng tính bằng Macro.

    Câu hỏi :
    Xin chỉ cách giấu/hiển thị các sheet trong bảng tính bằng Macro. 

    Trả lời :
    Bạn có thể dùng các đối tượng trong thư viện "Excel Automation Server" để giấu/hiển thị từng sheet của file Excel. Thư viện này đã được tích hợp sẵn trong môi trường macro của Excel. Thí dụ sau đây là macro demo việc ẩn/hiện Sheet1 của file Excel hiện hành.
     'macro ẩn Sheet1
     Sub HideSheet()
     Dim oSheet As Excel.Worksheet
     'xác định đối tượng Sheet1
     Set oSheet = Excel.Worksheets("Sheet1")
     'ẩn Sheet1
     oSheet.Visible = xlSheetHidden
     End Sub
     
     'macro hiện Sheet1
     Sub DispSheet()
     Dim oSheet As Excel.Worksheet
     'xác định đối tượng Sheet1
     Set oSheet = Excel.Worksheets("Sheet1")
     'hiển thị Sheet1
     oSheet.Visible = xlSheetVisible
     End Sub
     
     1. Tôi muốn viết macro trong tập tin Word để đếm số lần mở của chính tập tin này, vì yêu cầu công việc tôi cần biết tài liệu của mình đã được người khác mở ra bao nhiêu lần và vào thời điểm nào.
     2. Cách viết hàm hoặc macro trong Word hoặc Excel để đọc được ngày hệ thống của máy.
     Xin hướng dẫn.
     1. Để thực hiện công việc nào đó mỗi lần file Word được mở bởi người dùng, bạn có thể viết đoạn lệnh thực hiện công việc đó trong macro tên là AutoOpen và đặt macro này vào tài liệu Word tương ứng. Cụ thể để ghi lại từng thời điểm mở file Word, bạn hãy tiến hành các thao tác sau đây:
     - Chạy Word, mở file Word liên quan.
     - Chọn menu “Tools.Marco.Macros” để hiển thị cửa sổ macro, nhập tên "AutoOpen" vào textbox "Macro name", chọn tên file Word của bạn trong listbox "Macros in", chọn button “Create” để tạo macro nằm trong file Word của bạn. Khi cửa sổ soạn code hiển thị, bạn viết macro AutoOpen như sau:
     Sub AutoOpen()
     'macro này sẽ chạy mỗi lần file Word tương ứng được mở
     'mở file chứa lịch sử mở file Word
     Open "c:\MyLogfile" For Append As #1
     'ghi thời điểm hiện hành vào cuối file
     Write #1, Format(Now, "hh:mm:ss dd/mm/yyyy")
     'đóng file lại
     Close #1
     End Sub
     - Chọn menu "File.Close and return to Microsoft Word" để đóng cửa sổ soạn code và về cửa sổ Word.
     - Chọn menu "File.Save" lưu file Word.
     Từ đây trở đi, mỗi lần người dùng mở file Word, macro AutoOpen sẽ chạy và nó sẽ ghi 1 dòng văn bản miêu tả thời điểm mở file lên file c:\MyLogfile. Khi cần, bạn dùng tiện ích soạn thảo văn bản bất kỳ như Word, Wordpad, Notepad mở file MyLogfile và xem nội dung để biết thông tin. Để bảo vệ file MyLogfile, bạn có thể đặt nó ở 1 thư mục kín đáo nào đó.
     2. Như ở đoạn code VBA trên, chúng tôi đã dùng hàm Now để biết được thời điểm hiện hành khi hàm này được thực hiện. Đây là cách xác định ngày hệ thống tự nhiên và dễ dàng nhất trong đoạn code viết bằng ngôn ngữ VB hay VBA. Bạn cũng có thể gọi hàm API của Windows có tên là GetLocalTime() để xác định ngày hệ thống.
    Chuyên mục: Lập trình