1
Chương 24: Liên kết gia Excel vi Visual Basic 6.0
Tác gi: Phan T ng (tuhuongdcct36@gmail.com)- B môn Địa k thut -
Trường ĐH Kiến trúc HN
Chương này được trích t cun Lp trình VBA trong Excel (Nhà xut bn thng kê)
http://www.giaiphapexcel.com/forum/showthread.php?t=22105
Trước khi tìm hiu mi quan h này, bn biết rng Visual Basic 6.0 (VB 6.0) đưc y
dng bi tp đoàn Microsoft. Hin này VB 6.0 đã đưc thay thế bi VB.NET, tuy nhiên VB
6.0 vn phn mm đưc nhiu nhà lp trình s dng rng rãi nht trên thế gii. VB 6.0
mnh m hơn người anh em VBA vì VB 6.0 là ngôn ng lp trình hot động mang tính độc
lp. Nhìn chung ni dung, cu trúc, mã lnh trong th tc ca VB 6.0 và VBA rt ging nhau.
Vì vy, nhng người am hiu v VBA thì có th nhanh chóng tiếp cn và s dng VB 6.0.
Chương này s ch dn bước đầu to mi liên kết gia Excel vi VB 6.0 nhng do
ti sao s dng VB 6.0 cho các d án VBA ca bn. VB 6.0 th to ra hơn 6 kiu ng
dng, nhưng ch hai kiu liên kết đưc vi Excel ActiveX DLL Standard EXE. Mc
này s hướng dn bn cách s dng ActiveX DLL và Standard EXE trong VB 6.0 cho Excel
vi ng dng đơn giản “Hello World”. Chúng ta s khám phá s liên kết gia Excel
Standard EXE trong mc tiếp theo.
Như vy bn s thc mc ti sao cn phi s dng VB 6.0 trong khi đó VBA sn có trong
Excel. Dưới đây nhng nét chính để bn quyết định nên s dng VB 6.0 để liên kết
vi Excel hay không?!
- Kh năng bo mt code: VBA có chc năng bo mt code để chng người khác th
xem d án VBA ca bn (xem mc 11.2). Điu đó cn thiết khi bn đã b công sc để
xây dng sn phm ca mình. Tuy nhiên hin nay rt nhiu chương trình th tìm
phá đưc khóa. Chương trình ca bn lúc đó rt d b phân tán để mi người s dng
ngoài tm kim soát. Nguyên nhân do VBA không biên dch hay mã hoá đưc code, điu
đó không th ngăn chn đưc người khác truy cp vào. VB 6.0 kh năng biên dch thành
thư vin liên kết động (Dynamic Link Library - viết tt DLL), chương trình to ra t VB 6.0
hot động độc lp (Standard EXE), do đó kh năng bo mt s cao hơn.
- S dng VB 6.0 Form nâng cao: Điu khin xây dng trong Form ca VB 6.0 phong
phú hơn so vi VBA. Đối tượng Form đưc to trong ng dng Excel đưc gi MSForm,
còn trong VB 6.0 thì đưc hiu Ruby Form. S ging nhau v bên ngoài gia chúng
giao din chương trình, Form để bn có th xây dng, điu khin các đối tượng trong Form.
Ngoài ra các điu khin trong c hai kiu đều s dng lp trình s kin xy ra vi chúng để
2
Chương 24: Liên kết gia Excel vi Visual Basic 6.0
Tác gi: Phan T ng (tuhuongdcct36@gmail.com)- B môn Địa k thut -
Trường ĐH Kiến trúc HN
thi hành th tc. Đương nhiên gia chúng s khác nhau, ví d như thuc tính, phương
thc, s kin và k c các điu khin ca VB 6.0 phong phú hơn,...
- H tr điu khin ActiveX tt hơn: Không ch mi VB 6.0 Form cung cp kh năng h
tr tt hơn so vi UserForm ca Excel. VB 6.0 còn cung cp hàng trăm điu khin ActiveX
nhóm 3 mà khôngđầy đủ UserForm ca Excel. Ngoài ra kh năng điu khin mng d
liu liên liên kết đưc tăng cường hơn so vi VBA.
ng dng Active DLL Hello World” dưới đây s gii thích mt cách to liên kết t Excel
ti DLL. Excel s liên kết vi DLL và DLL s liên kết tr li vi Excel. Tiếp theo chúng ta s
nghiên cu cách s dng Form ca VB 6.0 nhưUserForm sn có trong Excel.
24.1. Tạo dự án ActiveX DLL
Khi m chương trình VB 6.0 thì ca s New Project hin ra như hình 24-1. Trong trường
hp ca s New Project không hin ra, bn vào menu File/New Project. Ti ca s New
Project chn kiu d án ActiveX DLL. Sau khi bn la chn kiu d án bm vào t
Open, VB 6.0 s to ra mt d án mi ActiveX DLL.
3
Chương 24: Liên kết gia Excel vi Visual Basic 6.0
Tác gi: Phan T ng (tuhuongdcct36@gmail.com)- B môn Địa k thut -
Trường ĐH Kiến trúc HN
Hình 24-1: Ca s New Project ca VB 6.0
Chúng ta s xây dng ng dng “Hello World” đầu tiên, ActiveX DLL s ch cha hai
phn Project (d án) Class Module (hình 24-2). D án đó s xác định tên ca ng dng
trong DLL, và Class Module s th hin các tính năng ca DLL trong các chương trình khác.
Hình 24-2 th hin cu trúc ca mt d án mi ActiveX DLL trong ca s Project. Nếu thy
ca s Project xut hin trông rt quen thuc, điu đó không nh hưởng c. Bn s
tìm thy môi trường gia VB 6.0 VBA ging nhau đến mc d gây nên s xáo trn khi
làm vic vi chúng. Điu đó s giúp bn d dàng làm vic vi VB 6.0 khi bn đã kinh
nghim v VBA. Chúng ta s dng ca s Project trong VB 6.0 gn như tương t vi VBA.
Hình 24-2: D án lúc đầu Hình 24-3: D án đã đặt tên
Hình 24-4: Lưu Class Module “HelloWorld” dưới dạng file Class Files (*.cls)
Hãy thay đổi tên ca Project thành AFirstProject, tên ca Class1 thành HelloWorld bng
cách gõ vào trong hp Name ca ca s Properties ca chúng như hình 24-6. Kết qu thay
4
Chương 24: Liên kết gia Excel vi Visual Basic 6.0
Tác gi: Phan T ng (tuhuongdcct36@gmail.com)- B môn Địa k thut -
Trường ĐH Kiến trúc HN
đổi th hin ti hình 24-3. Bn s thy tên file trong ngoc đơn nm phía bên ngoàithành
phn trong d án, đó là mt s khác nhau gia VBA và VB 6.0. Trong VBA, các thành phn
ca d án đưc lưu bên trong file riêng ca Excel. Trong VB 6.0, tt c các thành phn
đưc lưu gi trong các file riêng bit ca d án.
Sau đó bn lưu gi tên d án đó li vi hai phn Project (d án) Class Module (hình
24-6) vi tên mc định đã đặt. Bn s thy khi d án đã đưc lưu thì tên d án vi đuôi xác
định s hin th trong ca s Project (hình 24-5).
Hình 24-5: Lưu d án “AFirstProject” dưới dạng file Project Files (*.vbp)
24.1.1. Cách tạo liên kết đơn giản ActiveX DLL một hướng
Bây gi chúng ta s tìm hiu cu trúc ca d án ActiveX DLL hoàn chnh, hãy b sung
th tc để thc hin công vic o đó. Trong d án “Hello World”, DLL s cho hin hp
thông báo vi ni dung “Hello World!” khi thực hin lnh. Vic đó s đưc hoàn thành khi
bn thêm phương thc ti Class Module “HelloWorld”, đó chính th tc s hin th hp
thông báo khi đưc gi. Vic thêm phương thc ti VB 6.0 Class Module s làm vic tương
t như trong VBA. Bn bm đúp chut vào Class Module HelloWorld trong ca s Project,
ca s son code hin ra. Th tc ShowMessage như sau (hình 24-6):
Public Sub ShowMessage()
MsgBox "Hello World!", vbInformation
End Sub
5
Chương 24: Liên kết gia Excel vi Visual Basic 6.0
Tác gi: Phan T ng (tuhuongdcct36@gmail.com)- B môn Địa k thut -
Trường ĐH Kiến trúc HN
Công vic tht đơn gin! Bây gi chúng ta cn phi biên dch ActiveX DLL ca bn và gi
ra đưc t ng dng Excel để hin th li chào đó. Nhưng trước hết hãy biên dch code đó.
Đầu tiên vào menu File trong ca s VB 6.0, chn Make AFirstProject.dll... (hình 24-7).
Ca s Make Project hin ra như nh 24-8, chn nút OK để to AFirstProject.dll trong thư
mc cha d án ca bn.
Hình 24-6: Tạo th tc ShowMeesage trong Class Modules HelloWorld
Tiếp theo bn s làm trong Excel? Công vic đó rt d dàng khiến bn phi ngc
nhiên. Bước đầu tiên khi động Excel, sau đó bn m ca s VBE. Vào menu
Tools/References..., ca s References - VBAProject hin ra như hình 24-9. Tìm d án
AFirstProject.dll trong danh sách Available References chn. Nếu d án đó không xut
hin trong danh sách thì bn bm nào nút Browse... để tìm kiếm nơi lưu tr, sau đó bm OK
để xác nhn.