Thông tin tài liệu:
“Đóng gói” tập tin Excel Nhiều bạn đọc có yêu cầu “bảo mật” đối với những tập tin Excel giải quyết những bài toán của riêng mình để có thể “phân phối” chuyên nghiệp. Bài viết sẽ trình bày các bước cách thức “đóng gói” và tạo giao diện như một phần mềm bằng ngôn ngữ VB và người dùng phải cài đặt hoặc điền CD key khi mở tập tin.
Nội dung trích xuất từ tài liệu:
Đóng gói tập tin Excel
“Đóng gói” tập tin Excel
Nhiều bạn đọc có yêu cầu “bảo mật” đối với
những tập tin Excel giải quyết những bài toán của
riêng mình để có thể “phân phối” chuyên nghiệp.
Bài viết sẽ trình bày các bước cách thức “đóng
gói” và tạo giao diện như một phần mềm bằng
ngôn ngữ VB và người dùng phải cài đặt hoặc
điền CD key khi mở tập tin.
1. Trong file Excel, bạn có thể viết một số đoạn
code bằng ngôn ngữ VBA để xử lý dữ liệu trong file
Excel hiện hành (và các file Excel khác nếu muốn).
Các đoạn code VBA này sẽ truy xuất dữ liệu của file
Excel thông qua mô hình hướng đối tượng.
Thí dụ bạn có thể dùng các đối tượng
ActiveWorkbook, Workbooks() để truy xuất
workbook hiện hành hay workbook với tên xác định,
hay các đối tượng ActiveSheet hay Sheets() để
truy xuất worksheet hiện hành hay worksheet với tên
xác định. Thí dụ thủ tục CreateSheet sau đây sẽ tạo
1 worksheet mới (trong workbook hiện hành) có tên
là YourSheet, rồi tự động nhập thông tin tọa độ
của từng cell trong vùng cell từ A1 tới D10:
Sub CreateSheet()
Dim rg As Range
Dim row As Integer, col As Integer
'tạo worksheet mới
Sheets.Add
'đặt tên cho worksheet mới
ActiveSheet.Name = YourSheet
'thiết lập vùng cell cần xử lý
Set rg = Range(A1:D10)
'nhập thông tin tọa độ cho từng cell
'duyệt theo hàng
For row = 1 To 10
'duyệt theo cột
For col = 1 To 4
rg.Cells(row, col).Value = ( & row & , & col &
)
Next col
Next row
'lưu kết quả lên file
ActiveWorkbook.SaveAs c:\YourWB.xls
End Sub
Thật ra các đối tượng ActiveWorkbook,
Workbooks, ActiveSheet hay Sheets được truy xuất
trong thủ tục trên chỉ là đối tượng con của đối tượng
Application, đối tượng Application miêu tả ứng
dụng Excel đang chạy. Do đó nếu muốn dùng đường
dẫn tuyệt đối để truy xuất các đối tượng, thủ tục
CreateSheet() trên có thể được viết lại như sau:
Sub CreateSheet()
Dim rg As Range
Dim row As Integer, col As Integer
'tạo worksheet mới
Application.Sheets.Add
'đặt tên cho worksheet mới
Application.ActiveSheet.Name = YourSheet
'thiết lập vùng cell cần xử lý
Set rg = Range(A1:D10)
'nhập thông tin tọa độ cho từng cell
'duyệt theo hàng
For row = 1 To 10
'duyệt theo cột
For col = 1 To 4
rg.Cells(row, col).Value = ( & row & , & col &
)
Next col
Next row
'lưu kết quả lên file
Application.ActiveWorkbook.SaveAs
c:\YourWB.xls
End Sub
Bây giờ nếu muốn chuyển các đoạn code VBA đã
chạy tốt trong file Excel thành ứng dụng VB 6.0 độc
lập, bạn cần thực hiện một số công việc sau:
- Sử dụng thư viện Microsoft Excel x.0 Object
Library chứa các đối tượng Excel.Application,
ActiveWorkbook, Workbooks, ActiveSheet,
Sheets… trong Project quản lý ứng dụng VB 6.0 của
bạn.
- Viết code khởi tạo đối tượng Excel.Application
miêu tả ứng dụng Excel, trước khi sử dụng đối tượng
này để truy xuất các đối tượng con của nó.
- Copy đoạn code VBA dùng các đối tượng bằng
đường dẫn tuyệt đối đã chạy tốt vào đây.
- Sau khi xử lý dữ liệu của file Excel, viết code đóng
đối tượng Excel.Application lại.
2. Muốn bảo vệ phần mềm bởi người dùng bất
hợp pháp, bạn có thể viết thêm đoạn code kiểm tra
password, chèn đoạn code này vào đầu phần mềm.
Để thấy rõ cách giải quyết các vấn đề vừa trình bày,
chúng tôi xin giới thiệu qui trình điển hình để xây
dựng 1 ứng dụng VB 6.0, nó sẽ yêu cầu người dùng
nhập password, kiểm tra password nhập với password
hợp pháp được lưu trong ứng dụng (hay trên file dữ
liệu), nếu không đúng thì ứng dụng sẽ dừng, còn nếu
đúng chương trình sẽ chạy tiếp. Chương trình gồm 1
form chính chứa 1 button Create, khi người dùng
click chuột button này, ứng dụng sẽ chạy Excel, tạo 1
sheet mới có tên là YourSheet, nhập tọa độ vào
từng cell trong vùng cell từ A1 tới D10, lưu kết quả
lên file c:\YourWB.xls:
1. Chạy VB 6.0, khi cửa sổ New project hiển thị,
chọn icon Standard EXE rồi button Open để tạo mới
Project chứa Form đơn giản.
2. Chọn menu Project.Components để hiển thị cửa
sổ Components, duyệt tìm và chọn thư viện có tên là
Microsoft Excel x.0 Object Library rồi OK để
thêm các đối tượng trong thư viện này vào ToolBox
của Project hiện hành.
3. Vẽ 1 button vào form, thíết lập lại thuộc tính
(Name)=btnCreate, thuộc tính Caption=Create.
4. Ấn kép chuột vào button vừa tạo để tạo thủ tục xử
lý sự kiện click chuột vào button rồi viết code cho thủ
tục này như sau:
Option Explicit
'khai báo hàm API cần dùng
Private Declare Sub ExitProcess Lib kernel32
(ByVal uExitCode As Long)
'định nghĩa hằng miêu tả password đã mật mã
Const ENPASS = zpvsqbtt
'hàm mật mã chuỗi password đơn giản
Function Encryph(pass As String) As String
Dim bytes() As Byte
Dim str As String
Dim i As Integer
bytes = StrConv(pass, vbFromUnicode)
str =
For i = 0 To UBound(bytes)
str = str & Chr(bytes(i) + 1)
Next i
Encryph = str
End Function
'thủ tục khởi tạo form
Private Sub Form_Load()
Dim pass As String
'hiển thị form nhập password
frmPassword.Show vbModal
pass = frmPassword.txtPassword
Unload frmPassword
'kiểm tra password nhập
If ENPASS Encryph(pass) Then
'nếu sai thì dừng ứng dụng
ExitProcess (1)
End If
'nếu đúng thì chạy tiếp bình thường
End Sub
'thủ tục phục vụ click button Create
Private Sub btnCreate_Click()
'định nghĩa các biến cần dùng
Dim Application As Excel.Application
Dim WorkBook As Excel.WorkBook
Dim wksSheet As Excel.Worksheet
Dim rg As Range
Dim row As Integer, col As Integer
'tạo ứng dụng Excel
Set Application = New Excel.Application
'tạo workbook Excel
Set WorkBook = Application.Workbooks.Add
'đoạn code VBA đã có sẵn từ file Excel
'tạo worksheet mới
Application.Sheets.Add
'đặt tên cho worksheet mới
Application.ActiveSheet.Name = YourSheet
'thiết lập vùng cell cần xử lý
Set rg = Range(A1:D10)
'nhập thông tin tọa độ cho từng cell
'duyệt theo hàng
For row = 1 To 10
'duyệt theo cột
For col = 1 To 4
rg.Cells(row, col).Value = ( & row & , & col &
)
Next col
Next row
'lưu kết quả lên file
Application.ActiveWorkbook.SaveAs
c:\YourWB.xls
'dừng ứng dụng Excel
Application.Quit
Set Application = Nothing
End Sub
5. Dời chuột về cửa sổ Project (thường nằm ở phía
trên phải của màn ...