C
C
H
H
Ư
Ư
Ơ
Ơ
N
N
G
G
I
I
:
:
K
K
H
H
Á
Á
I
I
N
N
I
I
Ệ
Ệ
M
M
13
Hình I-1: Lập bảng tính kết cấu mặt đường trên Excel
Hình I-2: Tạo bản vẽ bình đồ tuyến đường ô tô trên AutoCAD
Để có thể kết nối với nhau, các phần mềm chuyên dụng thường cung cấp kết quả tính toán dưới
dạng dữ liệu có cấu trúc và được lưu trữ trong các tệp có định dạng TEXT, ví dụ như CSV hay
DXF. Với các dữ liệu có cấu trúc này, người dùng sẽ tự thực hiện việc kết nối các phần mềm
lại với nhau. Việc kết nối này cũng chỉ có thể giải quyết thêm m
ột số bài toán phát sinh, cho
nên một số phần mềm đã cho phép người dùng có thể can thiệp sâu hơn nữa vào bên trong nó
bằng các công cụ lập trình, để họ có thể tự giải quyết các bài toán phát sinh mà người thiết kế
phần mềm không thể dự kiến trước được. Khi người dùng xây dựng những chương trình của họ
dựa trên những ứng dụng được thiết kế theo cấu trúc mở này, họ sẽ tậ
n dụng những khả năng
14
sẵn có của chúng để làm nền, giúp cho việc lập trình được nhanh và hiệu quả hơn rất nhiều so
với cách lập trình thông thường, và do đó, có thể gọi chúng là các ứng dụng nền, điển hình và
được sử dụng nhiều nhất làm ứng dụng nền trong lĩnh vực thiết kế là AutoCAD và Excel, ngoài
việc phù hợp với định dạng tài liệu trong hồ sơ thiết kế (bản vẽ và bảng tính) chúng còn cho
phép ng
ười dùng xây dựng các chương trình chạy cùng với mục đích bổ sung thêm các chức
năng chuyên biệt.
Như vậy, một phần mềm được gọi là ứng dụng nền khi nó thỏa mãn đồng thời các tiêu chí sau:
Ø
Ø
Cho phép một chương trình chạy bên trong và cùng với nó (tương tự như một lệnh).
Ø
Ø
Cho phép sử dụng các tính năng của nó thông qua công cụ lập trình thích hợp.
Hình I-3: Mô hình lập trình trên ứng dụng nền
Một lệnh mới hay một chức năng mới được xây dựng trên ứng dụng nền thực chất là một
chương trình hoàn chỉnh, vì vậy, để xây dựng nó cần có công cụ lập trình tương ứng. Thông
thường công cụ lập trình được hiểu như là một tập hợp bao gồm:
Ø
Ø
Ngôn ngữ lập trình.
Ø
Ø
Môi trường lập trình.
Ø
Ø
Thư việ
n hỗ trợ lập trình.
Một ví dụ về công cụ lập trình trên AutoCAD, đó là AutoLISP. Với công cụ lập trình này,
không nhất thiết phải có môi trường lập trình và thư viện hỗ trợ lập trình, ta chỉ cần tạo ra một
tệp dạng TEXT chứa các mã lệnh viết bằng ngôn ngữ AutoLISP. Tuy nhiên từ phiên bản
AutoCAD R14, để thuận tiện cho người lập trình, một môi trường lập trình dành cho AutoLISP
đã được bổ sung, đó là Visual LISP. Với môi tr
ường lập trình này, việc lập và kiểm soát
chương trình trở nên thuận lợi hơn rất nhiều, bởi Visual LISP đã được tích hợp nhiều tính năng
hỗ trợ lập trình chuyên nghiệp, trong khi đó, nếu ta không sử dụng môi trường lập trình, thì tuy
ta có thể viết được một chương trình AutoLISP hoàn chỉnh, song trong suốt quá trình xây dựng
chương trình này ta luôn phải vất vả để tự kiểm soát chương trình.
C
C
H
H
Ư
Ư
Ơ
Ơ
N
N
G
G
I
I
:
:
K
K
H
H
Á
Á
I
I
N
N
I
I
Ệ
Ệ
M
M
15
Hình I-4: Xây dựng chương trình bằng ngôn ngữ AutoLISP khi không sử dụng môi trường
lập trình, ta sẽ luôn phải tự kiểm soát cú pháp và các lệnh mà không có bất cứ hỗ trợ nào vì
thế khả năng nhầm lẫn là rất lớn.
Hình I-5: Lập trình bằng ngôn ngữ AutoLISP trên môi trường lập trình Visual LISP, ta luôn
nhận được sự hỗ trợ tự động bằng màu sắc hay các tính năng khác trong môi trường lập
trình.
Thư viện hỗ trợ lập trình có thể rất đa dạng và thường là những phần bổ sung giúp cho việc xây
dựng chương trình được nhanh hơn thông qua sự kế thừa những thứ đã được làm từ trước. Khi
lập trình bằng AutoLISP thì thư viện hỗ trợ lập trình là tập hợp các chương trình hoàn chỉnh
cũng viết bằng AutoLISP. Để sử dụng thư viện hỗ trợ lậ
p trình thì mỗi công cụ lập trình có một
quy định về cách thức sử dụng riêng, ví dụ với AutoLISP, để sử dụng một chương trình con
trong thư viện, ta chỉ cần tải chương trình AutoLISP chứa chương trình con đó thông qua một
câu lệnh từ chương trình chính.
16
Tương ứng với từng ứng dụng nền thì sẽ có các công cụ lập trình phù hợp. Một ứng dụng nền
có thể hỗ trợ một hay nhiều công cụ lập trình khác nhau, tùy mục đích sử dụng. AutoCAD hỗ
trợ các công cụ lập trình trên ứng dụng nền sau:
Ø
Ø
AutoLISP
Ø
Ø
ObjectARX
Ø
Ø
VBA (Visual Basic for Applications)
Còn Excel hỗ trợ các công cụ lập trình:
Ø
Ø
VBA
Ø
Ø
VSTO (Visual Studio Tools for Office)
Mỗi công cụ lập trình luôn có những đặc điểm riêng và khó có thể phán xét cái nào hay hơn
hoặc kém hơn một cách tổng quát. Do đó, để lựa chọn được công cụ lập trình thích hợp khi lập
trình trên ứng dụng nền, cần dựa vào mục đích cụ thể. Ví dụ khi lập trình trên AutoCAD, để tạo
các công cụ trợ giúp vẽ thì AutoLISP là lựa chọn hợp lý. Nhưng để xây dựng những ứng dụng
l
ớn, phức tạp, đòi hỏi phải can thiệp sâu vào bên trong AutoCAD thì chỉ có thể dùng
ObjectARX mới làm được.
Trong lĩnh vực tự động hóa thiết kế công trình giao thông, hầu hết các bài toán lớn và cơ bản đã
được giải quyết, nhưng còn rất nhiều các bài toán khác, tuy không lớn và không quá phức tạp,
nhưng lại rất đa dạng và khó khái quát, vẫn chưa có phần mềm thực hiện, và do đó, phạm vi
ứng dụng của lập trình trên
ứng dụng nền là rất lớn và có tính hiệu quả cao. Hơn nữa, với quy
mô của các bài toán này, thì việc lựa chọn VBA làm công cụ lập trình là rất phù hợp bởi:
Ø
Ø
Ngôn ngữ lập trình Visual Basic (VB) là một loại ngôn ngữ dễ sử dụng, có số lượng
người dùng đông đảo và tài liệu tham khảo rất phong phú. Điều này cho phép người dùng
trao đổi kỹ năng, tìm kiếm tài liệu, mã nguồn một cách dễ dàng.
Ø
Ø
Môi trường lập trình thân thiện, dễ dùng và đầy đủ nên việc xây dựng ứng dụng sẽ nhanh
và không cần thêm công cụ lập trình nào khác.
Ø
Ø
Trên tất cả các ứng dụng nền hỗ trợ VBA, giao diện lập trình là đồng nhất, do đó người
dùng có thể lập trình mở rộng trên nhiều ứng dụng nền một cách thuận lợi.
Ø
Ø
Thư viện lập trình có rất nhiề
u và đa dạng cho nên người dùng có thể xây dựng ứng dụng
của mình nhanh và chuyên nghiệp.
Ø
Ø
Tốc độ thực thi của chương trình nhanh.
Ø
Ø
Khai thác được hầu hết các tính năng sẵn có của ứng dụng nền.
Ø
Ø
Chương trình VBA có thể được nhúng trong tệp của ứng dụng nền (chẳng hạn như tệp
bảng tính của Excel hay tệp bản vẽ của AutoCAD) hoặ
c có thể được lưu dưới dạng một
dự án độc lập. Điều này giúp cho việc phân phối, chia sẻ mã lệnh được thuận tiện.
Kếtchương
Tự động hóa công tác lập hồ sơ thiết kế công trình giao thông là hoàn toàn khả thi và có thể
được thực hiện theo nhiều cách khác nhau.
Dự án VBA nên xây dựng theo hướng gộp cả phần tính toán và xuất kết quả vào một mô-đun
thống nhất.
Sử dụng AutoCAD và Excel làm ứng dụng nền để xây dựng các ứng dụng bằng VBA nhằm
mục đích hỗ trợ thiết kế là lựa chọn mang tính khả thi cao và có nhiều ưu điểm.
Để lập trình với VBA, cách tốt nhất, là làm chủ từng phần. Đầu tiên cần nắm vững ngôn ngữ
lập trình Visual Basic và cách sử dụng VBA IDE để viết mã lệnh cũng như thiết kế giao diện.
C
C
H
H
Ư
Ư
Ơ
Ơ
N
N
G
G
I
I
:
:
K
K
H
H
Á
Á
I
I
N
N
I
I
Ệ
Ệ
M
M
17
Sau đó nghiên cứu mô hình đối tượng của ứng dụng nền (là những thành phần của ứng dụng
nền mà người dùng có thể sử dụng) cũng như cách sử dụng chúng bằng VBA.
18
C
C
H
H
Ư
Ư
Ơ
Ơ
N
N
G
G
I
I
I
I
:
:
T
T
Ổ
Ổ
N
N
G
G
Q
Q
U
U
A
A
N
N
V
V
Ề
Ề
V
V
B
B
A
A
19
CHƯƠNG II: TỔNG QUAN VỀ VBA
1. Đặc điểm của VBA
Từ các đặc điểm cơ bản đã được phân tích ở cuối chương 1 ta có thể thấy rằng VBA là một
công cụ lập trình cho phép phát triển nhanh phần mềm và được tích hợp vào trong ứng dụng
nền. Về thực chất, VBA được xây dựng dựa trên kiến trúc COM
1
, cho nên người dùng có thể
sử dụng các thành phần sẵn có của ứng dụng nền trong việc xây dựng chương trình của mình
với VBA.
Một dự án được xây dựng bằng VBA dựa trên ứng dụng nền nào thì nó phụ thuộc chặt chẽ vào
ứng dụng nền đó, bởi theo mặc định, dự án VBA sẽ hoạt động và sử dụng các thành phần trong
chính ứng dụng nền đó. Điều này có ngh
ĩa là ta rất khó có thể chuyển đổi một dự án VBA từ
loại ứng dụng nền này sang một ứng dụng nền khác cũng như tạo ra một ứng dụng chạy độc
lập.
Sự khác biệt cơ bản nhất của VBA trong các ứng dụng nền (ví dụ giữa VBA trong AutoCAD
và VBA trong Excel) là cách thức sử dụng các thành phần (đối tượng) của ứng dụng nền. Cho
nên khi xây dựng ứng d
ụng bằng VBA, việc đầu tiên là phải tìm hiểu mô hình đối tượng của
ứng dụng nền và cách sử dụng chúng.
Như trong chương trước đã trình bày, xây dựng một dự án VBA, một cách tổng quát, người
dùng cần nắm vững hai phần:
Ø
Ø
Ngôn ngữ lập trình Visual Basic và giao diện lập trình VBA IDE. Phần này sẽ bao gồm
các nội dung kiến thức trong chương 2 và 3.
Ø
Ø
Mô hình đối tượng của ứng dụng n
ền và cách sử dụng chúng. Nội dung kiến thức của
phần này sẽ được trình bày trong chương 4 và 5.
2. Trình tự xây dựng một dự án bằng VBA
Về mặt trình tự thực hiện, việc xây dựng một dự án VBA bao gồm các bước sau:
1. Xác định rõ nhu cầu xây dựng chương trình. Nhu cầu này được xác định dựa trên hoạt
động thực tế của người dùng và thường do chính người dùng đề xuất. Đây là bước xác định
các chức năng của chương trình.
2. Xác định rõ mục tiêu mà chương trình cần đạt được. Bước này là phần cụ thể hóa củ
a bước
1, ví dụ như bước 1 có nhu cầu hoàn thiện bản vẽ kết cấu BTCT, còn bước này sẽ cụ thể
mức độ hoàn thiện (đến đâu và như thế nào).
3. Lựa chọn ứng dụng nền và công cụ lập trình phù hợp cho việc xây dựng chương trình. Ví
dụ với nhu yêu cầu tính và tạo bản vẽ của cấu kiện BTCT, thì ứng dụng nền thích hợp là
AutoCAD và công cụ lậ
p trình có thể là AutoLISP, VBA, ObjectARX. Tùy theo mức độ
phức tạp của bài toán mà ta lựa chọn công cụ lập trình phù hợp. Ở đây VBA đảm bảo sự
thuận tiện trong việc xây dựng các mô-đun tính toán và tạo bản vẽ đối với những bài toán
thông thường.
4. Thiết kế hệ thống cho chương trình (hay dự án): bao gồm việc lập sơ đồ khối, xác định các
mô-đun của chương trình, thiết kế giao diệ
n nhập xuất dữ liệu và kết quả, xây dựng hệ
thống cơ sở dữ liệu sao cho thỏa mãn những đề xuất ở bước 1 và 2.
1
COM (Component Object Model): là một kiến trúc lập trình được thiết kế bởi Microsoft. Mục đích của công
nghệ này là tạo ra một chuẩn công nghệ trong lập trình, mà ở đó cho phép xây dựng chương trình theo mô hình lắp
ghép hay sử dụng lại các sản phẩm đã được hoàn thiện từ trước theo chuẩn COM.
20
5. Viết mã lệnh (lập trình): là việc sử dụng công cụ lập trình để tạo ra chương trình phù hợp
với hệ thống đã được thiết kế ở bước 4.
6. Kiểm thử chương trình: là công đoạn hoàn thiện và chuẩn bị đưa chương trình vào sử dụng.
Những công việc chính của bước này bao gồm:
Ø
Ø
Kiểm tra xem các chức năng của chương trình đã th
ỏa mãn các yêu cầu đề ra từ trước
chưa bằng cách chạy thử tất cả các tính năng của chương trình dựa trên một kịch bản cụ
thể.
Ø
Ø
Kiểm tra hiệu năng của chương trình: xem thời gian thực hiện và quy trình sử dụng
chương trình có hợp lý không.
Ø
Ø
Kiểm tra khả năng chịu lỗi của chương trình, ví dụ như khi nhập số liệu sai. M
ột chương
trình đảm bảo khả năng chịu lỗi là nó sẽ không bị dừng lại đột ngột do lỗi thao tác của
người dùng hay dữ liệu sai.
7. Đóng gói, đưa chương trình vào sử dụng: bao gồm việc xây dựng tài liệu hướng dẫn cài đặt
và sử dụng chương trình nhằm mục đích giúp người dùng có thể triển khai chương trình
vào thực tế.
8. Tiếp nhận các góp ý, phản h
ồi của người dùng để bổ sung hay hoàn thiện những khiếm
khuyết của chương trình mà trong quá trình thiết kế hệ thống hay kiểm thử đã bỏ qua hoặc
chưa phát hiện được.
9. Nâng cấp chương trình: sau một thời gian sử dụng, dựa trên những phản hồi của người
dùng, nếu thấy rằng chương trình cần bổ sung thêm những tính năng mới thì người phát
triển phần m
ềm sẽ thực hiện sự bổ sung này dựa trên những thành phần đã có từ trước.
3. Cấu trúc của một dự án VBA
Khi nói đến các thành phần tạo nên một dự án VBA thì cấu trúc của nó, về tổng quát, như sau:
Ø
Ø
Mô-đun chuẩn (Module): là nơi chứa các mã lệnh khai báo, các chương trình con (hàm và
thủ tục). Việc tạo ra các mô-đun chuẩn thường căn cứ theo các khối chức năng mà người
thiết kế hệ thống đặt ra.
Ø
Ø
Mô-đun lớp (Class Module): là nơi chứa định nghĩa cho các lớp của dự án.
Ø
Ø
Userform: là giao diện dạng hộp thoại giúp cho việc giao tiếp giữa người sử dụng và
chương trình được thuận tiện. Thông thường người ta sử dụng Userform để nhập số liệu,
xuất kết quả của chương trình. Trong một số dự án, nếu việc nhập số liệu và biểu diễn kết
quả được thực hiện trực tiếp trên ứng dụng nền, thì có thể
không cần sử dụng Userform.
Những thành phần này là bộ khung để người dùng xây dựng chương trình của mình lên trên đó,
ví dụ như viết mã lệnh hay thiết kế giao diện cho chương trình. Mô-đun lớp và UserForm là hai
thành phần có thể xuất hiện hoặc không thùy thuộc vào từng dự án và tất cả những thành phần
sử dụng trong dự án đều được hiển thị trên giao diện của VBA IDE.
C
C
H
H
Ư
Ư
Ơ
Ơ
N
N
G
G
I
I
I
I
:
:
T
T
Ổ
Ổ
N
N
G
G
Q
Q
U
U
A
A
N
N
V
V
Ề
Ề
V
V
B
B
A
A
21
Hình II-1: Cấu trúc của dự án thể hiện trên VBA IDE
Tuy nhiên, khi xây dựng chương trình (viết mã lệnh) cụ thể thì khái niệm cấu trúc của một
chương trình là sự bố trí, sắp xếp các câu lệnh trong chương trình đó. Như vậy khái niệm cấu
trúc này phụ thuộc vào từng loại ngôn ngữ lập trình. Đối với ngôn ngữ lập trình Visual Basic
(VB), cấu trúc của nó chỉ tập trung vào chương trình con (hàm và thủ tục) chứ không có một
quy định về cấu trúc nào đối với chương trình chính. Chi tiết c
ủa cấu trúc của chương trình con
sẽ được đề cập đến trong các phần sau.
4. Môi trường phát triển tích hợp VBA IDE
Trong mỗi công cụ lập trình trên ứng dụng nền, luôn có một môi trường lập trình nhằm hỗ trợ
người dùng có thể xây dựng, thử nghiệm và hoàn thiện chương trình của mình. Trong
AutoCAD và Excel, khi sử dụng VBA để lập trình, môi trường lập trình được gọi là Môi
trường phát triển tích hợp (viết tắt là VBA IDE). Trên tất cả các ứng dụng nền, VBA IDE có
cấu trúc và hoạt động tương đương nhau với giao diện cơ bản và cách g
ọi giao diện VBA IDE
từ ứng dụng nền như sau:
Ø
Ø
Phím tắt: từ giao diện chính của ứng dụng nền, nhấn tổ hợp phím Alt+F11.
Ø
Ø
Menu: Tools Ö Macro Ö Visual Basic Editor.
22
Hình II-2: Giao diện chính của VBA IDE
1. Thanh trình đơn (Menu bar): chứa tất cả các lựa chọn cần thiết để thao tác với VBA IDE
2. Cửa sổ dự án (Project Explorer Window): liệt kê dưới dạng cây phân cấp các dự án hiện
đang được mở trong VBA IDE và các thành phần có trong từng dự án như các tài liệu
thành phần, các mô-đun chứa chương trình con, các mô-đun lớp, các cửa sổ do người dùng
tạo.
GỢI Ý Việc thêm các thành phần mới vào trong một dự án được thực hiện trong menu
Insert của VBA IDE. Ví dụ muốn thêm một mô-đun chuẩn vào trong dự án, chọn Insert Ö
Module
3. Cửa sổ mã lệnh (Code Window): mỗi thành phần được liệt kê trong cửa sổ dự án đều có
một cửa sổ mã lệnh riêng, chứa mã lệnh cho thành phần đó. Người dùng có thể hiệu chỉnh
mã lệnh, tạo ra mã lệnh mới trong cửa sổ mã lệnh.