Bảo vệcác tài liệu dùng chung 17/11/2005 11h:

Một phần của tài liệu Các vấn đề chung Excel (Trang 27 - 34)

Bạn muốn bảo vệ các tập tin Word và Excel không bị thay đổi khi bạn gửi chúng tới những người khác. Các tập tin dùng chung rất dễ bị thay đổi, chỉnh sửa lại. Vậy có cách nàođể giữ nguyênđịnh dạng và nội dung các tập tin bạn gửi?

Bảo vệ tài liệu Word

Bạn có thể bảo vệ được các tập tin Word, tuy nhiên sự bảo vệ này không phải là hoàn hảo. Trong Word 2003, bạn chọn menu Tools -> Protect Document. Bạn đánh dấu chọn vào mục Allow only this type of editing in the document. Bạn hãy để nguyên giá trị No changes (Read only), hoặc chọn Comments- lựa chọn này cho phép người nhận có thể thêm các chú thích vào tài liệu. Bạn có thể thêm tài liệu bằng cách Insert -> Comment mà không làm thayđổi nội dung tài liệu. Sau đó, bạn nhấn nút Yes, Start Enforcing Protection, nhập mật khẩu 2 lần, nhấn OK.

Trong Excel 2003, bạn chọn Tools -> Protection -> Protect Sheet. Trong danh sách các hoạt động được phép, bạn hãy bỏ chọn tất cả đánh dấu ngoại trừ 2 lựa chọn đầu tiên (Select locked cells và Select unlocked cells). Tiếp theo, bạn nhập mật khẩu, nhấn OK, và lặp lại bước này một lần nữa. Bởi vì tất cả các ô đều bị khóa nên người sử dụng không có mật khẩu sẽ không thể thay đổi được. Tuy nhiên, phương pháp này sẽ không cho phép người sử dụng khác có thể thay đổi các tập tin của bạn, nhưng với những người sử dụng máy tính có kinh nghiệm thì sự bảo vệ này quáđơn giản với họ. Chẳng hạn, họ có thể sao chép (copy) và dán (paste) cácđoạn văn bản từ tài liệu của bạn sang một tài liệu mới, xóa tài liệu gốc đi, thay đổi tên tài liệu mới thành tên tài liệu của bạn.

Bảo vệ tài liệu Excel

Không những thế, trên Internet còn có vô số các tiện ích cho phép bẻ khóa mật khẩu các tài liệu của Office.

Còn một cách nữa, bạn chuyển các tài liệu của mình sangđịnh dạng PDF hoặc lưu lại thành dạng ảnh, cách này sẽ gây khó khăn hơn khi người nhận định thay đổi tài liệu của bạn. Tuy nhiên, bạn dù cách nàođi nữa thì người nhận cũng có thể tìm ra cáchđể phá vỡ. Vì vậy, điều đó còn tùy thuộc vào sự tin tưởng của bạn nơi người nhận.

Dùng VBA trong Excel để tạo và sửa chữa PivotTable- 1/9/2006 10h:19

Chức năng PivotTable là chức năng mạnh của Excel, nó giúp bạn tổng kết số liệu nhanh một cách kinh ngạc. Chức năng nàyđầu tiên xuất hiện trong Excel 5.

Tôi cho rằng các bạn đã làm quen với việc tạo và sửa chữa PivotTable bằng cách thủ công và bài viết này sẽ hướng dẫn dùng VBAđể tạo và sửa chữa PivotTable một cách linh động. Bài viết sử dụng cho Excel 2000.

Giả sử ở sheet1, tôi có khối dữ liệu cần phân tích nhưHình1. Khối dữ liệu này gồm các trường: SalesRep (đại diện bán hàng), Region (Vùng), Month (Tháng), Sales (doanh số bán).

Trước khi tạo bảng PivotTable nhưHình 2, tôiđã chọn Record New Macro... nhưHình 3,để xem đoạn mãđược ghi lại nhưthế nào.

Sauđó tôi vào màn hình VBE bằng cách nhấn tổ hợp phím Alt + F11. Tôi vàoModule1, thấy

được đoạn mã nhưsau: Sub Macro1()

Macro1 Macro

Macro recorded 17/03/2003 by Duyet Range("A1:D13").Select ActiveWorkbook.PivotCaches.Add(SourceT ype:=xlDatabase, SourceData:= _ "Sheet1!R1C1:R13C4").CreatePivotTable TableDestination:=Range("A1"), _ TableName:="PivotTable1" ActiveSheet.PivotTables("PivotTable1").Small Grid = False ActiveSheet.PivotTables("PivotTable1").AddFi elds RowFields:="SalesRep", _ ColumnFields:="Month", PageFields:="Region" ActiveSheet.PivotTables("PivotTable1").Pivot Hình 3 Ghi chú:

Region Là trưPivotTable.ờng page trong SalesRep Là trường row trong

PivotTable.

Month Là trường column trong

PivotTable.

Sales

Là trường data trong PivotTable sử dụng hàm Sum

Fields("Sales").Orientation = _ xlDataField

End Sub

Khảo sát đoạn mã đãđược ghi:

Để khảo sát đoạn mã trên bạn cần phải biết một số đối tượng liên quan. Tất cả các đối tượng này đều được giải thích trên online help.

PivotCaches là tập hợp các đốđối tượng Workbooki tượng PivotCache trong PivotTables là tập hợp các đối tượng PivotTable trong

đối tượng Workbook

PivotTableFields là tập hợp các trường trong đối tượng

PivotTable

Create PivotTable (adsbygoogle = window.adsbygoogle || []).push({});

một phương thức của đối tượng PivotCache để tạo một PivotTable sử dụng dữ liệu trong một PivotCache

Ta có thể viết lại thủ tục trên bằng thủ tục CreatePivotTable(chú ý bạn nhập thủ tục này vào module1) sauđây, có thể nó hơi dài nhưng sẽ dễ hiểu hơn, và bạn có thể chạy chương trình bất cứ đâu bằng cách nhấn tổ hợp phím Alt + F8, sauđó chọn thủ tục CreatePivotTablevà chọn Runnhư

Hình 4.

Sub CreatePivotTable() Dim PTCache As PivotCache Dim PT As PivotTable

Application.ScreenUpdating = False Xoa PivotSheet neu no ton tai On Error Resume Next

Application.DisplayAlerts = False Sheets("PivotSheet").Delete

On Error GoTo 0 Tao Pivot Cache Set PTCache =

ActiveWorkbook.PivotCaches.Add _ (SourceType:=xlDatabase, _

SourceData:=Sheets("Sheet1").Range("A1"). CurrentRegion.Address)

Tao worksheet moi va dat ten Worksheets.Add

ActiveSheet.Name = "PivotSheet" Tao Pivot Table tu Cache

Set PT = PTCache.CreatePivotTable _

(TableDestination:=Sheets("PivotSheet").Range("A1"), _ TableName:="PivotTable1")

With PT

Them cac truong

.PivotFields("Region").Orientation = xlPageField .PivotFields("Month").Orientation = xlColumnField .PivotFields("SalesRep").Orientation = xlRowField .PivotFields("Sales").Orientation = xlRowField Application.ScreenUpdating = True End With End Sub

Khi chạy xong thủ tục trên, bạn sẽ được một PivotTable ở sheet2, trong trường hợp này sheet có tên là PivotSheet. (Hình 5)

Nếu chú ý, bạn sẽ thấy sự khác biệt của 2 đoạn mã trên. TrongMacro1khi sử dụng phương thức

Addđể tạo PivotCachethìSourceDatalà "Sheet1!R1C1:R13C4" còn trong đoạn mã tôi viết là

Sheets("Sheet1").Range("A1").CurrentRegion.Address.Ở đây tôi dùng thuộc tính Current Region, có nghĩa là dữ liệu chúng ta sử dụng dựa trên vùng hiện tại xung quanh ô A1. Điều này để chắc chắn thủ tục CreatePivotTablevẫn tiếp tục làm việc tốt khi chúng ta thêm vào dữ liệu.

Bây giờ giả sử tôi có thêm trường Target(chỉ tiêu) trong khối dữ liệu, và trong PivotTabletôi sẽ đưa thêm trường target vàođồng thời cũng thêm trường tính toán Variance. Trường này

(Variance) sẽ bằng Sales - Target. Khối dữ liệu mới của tôi nhưhình 6.

Đoạn mã trong thủ tục CreatePivotTabletrên sẽ được thêm nhưsau (tôi chỉ thêm trongđoạnWith PT ....End With):

With PT

Them cac truong

.PivotFields("Region").Orientation = xlPageField .PivotFields("Month").Orientation = xlColumnField .PivotFields("SalesRep").Orientation = xlRowField .PivotFields("Sales").Orientation = xlDataField .PivotFields("Target").Orientation = xlDataField

Them truong tinh toan .CalculatedFields.Add "Variance", "=Sales - Target" .PivotFields("Variance").Orientation = xlDataField Thay doi caption

.PivotFields("Sum of Sales").Caption = "Sales ($) " .PivotFields("Sum of Target").Caption = "Target ($) " .PivotFields("Sum of Variance").Caption = "Variance ($) " End With

Sau khi chạy lại thủ tục trên tôi sẽ được nhưhình 7.

Giả sử bây giờ dữ liệu của tôi gồm 6 tháng (hình 8), tôi muốn đưa thêm cột tổng theo từng 3 tháng. Tôi phải sửa lại đoạn mã của mình nhưsau: (adsbygoogle = window.adsbygoogle || []).push({});

With PT

Them cac truong

.PivotFields("Region").Orientation = xlPageField .PivotFields("Month").Orientation = xlColumnField .PivotFields("SalesRep").Orientation = xlRowField .PivotFields("Sales").Orientation = xlDataField .PivotFields("Target").Orientation = xlDataField

Them truong tinh toan

.CalculatedFields.Add "Variance", "=Sales - Target"

.PivotFields("Variance").Orientation = xlDataField

Them muc tinh toan .PivotFields("Month").CalculatedItems.Add "Q1", _ "= thang 1 + thang 2 + thang 3"

.PivotFields("Month").CalculatedItems.Add "Q2", _ "= thang 4 + thang 5 + thang 6"

Di chuyen cac muc tinh toan

.PivotFields("Month").PivotItems("Q1").Position = 4 .PivotFields("Month").PivotItems("Q2").Position = 8 Thay doi caption

.PivotFields("Sum of Sales").Caption = "Sales ($) " .PivotFields("Sum of Target").Caption = "Target ($) " .PivotFields("Sum of Variance").Caption = "Variance ($) "

End With

Sau khi chạy lại thủ tục CreatePivotTable tôi sẽ được kết quả nhưHình 9.

Vâng,đến đây các bạn thấy đó, nếu chúng ta biết sử dụng VBA thì công việc phân tích dữ liệu sẽ trở nên đơn giản hơn. Ngoài ra, ta cũng có thể tạo một PivotTable từ nguồn dữ liệu bên ngoài như Access chẳng hạn. Để lập trình PivotTableđược tốt, các bạn nênđọc phần online help của Excel về các đối tượng, phương thức, thuộc tính đãđề cập ở trên.

Hy vọng rằng bài viết trên sẽgiúp các bạn một phần nào trong công việc.

Một phần của tài liệu Các vấn đề chung Excel (Trang 27 - 34)