You are on page 1of 5

Tp ch Khoa hc Cng ngh Hng hi S 18 6/2009

68
NG DNG VBA AUTOMATION TRONG VIC TRAO I D LIU GIA
PHN MM MICROSOFT EXCEL VI PHN MM AUTOCAD

KS. L S XINH
Khoa Cng trnh thy, Trng HHH
Tm tt:
Bi bo trnh by kh nng t ng ha vic trao i d liu gia Microsoft Excel v AutoCAD
bi chc nng Automation ca ngn ng lp trnh VBA (Visual Basic For Applications). ng
dng ny khng ch ng dng trong lnh vc Thit k cng trnh m cn c th c ng dng
rng di trong cc lnh vc k thut khc, gip gim ng k thi gian thc hin v cho kt qu
c chnh xc cao. Cng ngh trao i ny c ng dng trong chng trnh Tnh ton
b rng lung tu theo tiu chun PIANC-IAPH do tc gi lp.
Abstract:
The paper presents the ability of data exchange between Excel and AutoCad by VBA
(Visual Basic for Applications). The application is useful not only for Construction
Engineering but also for solving other technical problems with high accuracy and reducing
the time for implementation. This integrating technology has been applied in a software
Design the Channel Width base on PIANC-IAPH Standard programmed by the author.
1. t vn
VBA l mt ngn ng lp trnh hng i tng c kh nng pht trin ng dng mnh
m vi nhiu tnh nng phong ph. VBA c tch hp trong mi trng Office v AutoCAD vi
cc chc nng gn tng t nh nhau. VBA Automation l mt cng ngh COM (Component
Object Model) trong Microsoft Windows, n cho php s kt hp gia cc phn mm vi nhau.
Cng ngh COM c pht trin bi Microsoft, l mt chun cng ngh cho php xy dng
chng trnh theo m hnh lp ghp (component) hay s dng cc sn phm c hon thin
t trc theo tiu chun cng ngh COM. VBA Automation cho php iu khin cc i tng
trong ng dng khc t bn ngoi ng dng . V d nh c th iu khin Microsoft Excel t
Microsoft Word hay AutoCAD (v ngc li) ging nh thc hin trc tip trn ng dng .
L do nghin cu pht trin ng dng da trn cng ngh VBA Automation trao i d
liu gia MS Excel v AutoCAD l g? Bi MS Excel l phn mm chuyn v bng tnh v biu
vi kh nng tnh ton, x l d liu rt mnh nhng kh nng ha th hn ch. AutoCAD l
phn mm li rt mnh trong lnh vc ha nhng li yu v kh nng tnh ton trc quan, vic
x l v qun l d liu c nhiu hn ch. Trong khi c hai phn mm ny u c s dng
rng ri trong nhiu ngnh k thut nh ng tu, Xy dng, Giao thng, a cht, Trc a,
Vic to mi lin kt gia hai phn mm trn s khc phc c nhng hn ch trn ng thi
khai thc trit cc th mnh ca chng trong cng tc tnh ton, thit k. Bn thn hai phn
mm ny u c tch hp ngn ng lp trnh ng dng VBA, v c bn ging ngn ng lp tnh
Visual Basic (VB) d hc, rt ph bin, nhiu ti liu hng dn v hin ti ang c ging dy
trong hc phn Tin hc i cng ca Trng i hc Hng hi Vit Nam cho tt c cc ngnh k
thut.
Thng thng cc bi ton thit k thng c gii quyt theo 3 bc nh sau:

Hnh 1: Trnh t cc bc gii bi ton thit k
Theo trnh t ny ta c th thc hin cc bc (1), (2) trong MS Excel, cn bc (3) ta s
thc hin trong AutoCAD. Nu ch s dng ring tng ng dng l MS Excel hoc AutoCAD vi
s h tr ca VBA th vic t ng ha ch c th t mt phn. c bit vi cc bi ton c s
lng d liu ln, cng tc lp i lp li nhiu ln th s gy tn nhiu thi gian thc hin, trong
khi s rt n gin khi dng VBA Automation. Cn nu s dng VB6, VB.NET hay C
++
, thc
Nhp d liu
ban u
(1)
Tnh ton, x
l d liu
(2)
Th hin kt qu
bng Bn v
(3)

Tp ch Khoa hc Cng ngh Hng hi S 18 6/2009

69
hin bi ton trn s rt phc tp v phi xy dng ton b chng trnh theo mi trng , iu
ny l khng d i vi nhng ngi lp trnh khng chuyn.
2. Kt qu nghin cu
Trong khun kh bi bo, tc gi ly v d v ni dung chnh ca chng trnh tnh ton b
rng lung tu theo tiu chun PIANC-IAPH. thc hin c chng trnh ny, cn phi hiu
c cc i tng cng vi thuc tnh, phng thc ca chng trong MS Excel v AutoCAD.
Cc bc xy dng chng trnh nh sau:
2.1. Bc 1: Khai bo tham chiu n th vin ng dng.
u tin, cn phi khai bo tham chiu n th vin ng dng cn thc hin bng cch chn
References trong menu Tools ca ca s VBA theo:
- Vi VBA MS Excel: chn AutoCAD 2004 Type Library hoc cc phin bn tng ng vi
phn mm AutoCAD bn ang s dng.
- Vi VBA AutoCAD: chn Microsoft Excel 11 Object Library hoc cc phin bn tng ng vi
phn mm MS Excel bn ang s dng.

Hnh 2: Khai bo tham chiu n th vin AutoCAD t VBA trong MS Excel
Khi khai bo tham chiu nh trn, th vin i tng Excel (hoc AutoCAD) d dng
c hin th trong ca s VBA AutoCAD (hoc Excel) bi chc nng tr gip Auto List Members.
Cng vic ny rt hu ch gip chng ta d dng iu khin ng dng ny t VBA ca ng dng
khc ging nh thc hin t chnh bn thn chng.
2.2. Bc 2: Xy dng phn d liu u vo v tnh ton kt qu th hin trong MS Excel
S liu nhp thc hin trn bng tnh Excel bao gm s liu v Tu thit k, s liu v
iu kin t nhin ( iu kin a hnh, a cht, thy hi vn), s liu hng ha, s liu v thit b
bo hiu,
S dng cc hm th tc trong VBA MS Excel hon thin bng tnh, cho kt qu tnh
ton lm s liu u vo cho vic v mt ct ngang thit k s b.
2.3 Bc 3: Xy dng chng trnh x l, chuyn i d liu gia MS Excel v AutoCAD.
Trc ht cn phi xy dng th tc khi ng mi trng ng dng v xc nh i
tng tham chiu. Di y l ni dung th tc khi ng ng dng AutoCAD. Cc th tc u
s dng phng thc GetObject v CreadObject tham chiu v to i tng ng dng
Automation c th truy cp, iu khin. i tng ca ng dng tham chiu n l AcadApp
(AcadApplication) hay ExcelApp(Excel.Application) m chng ta c kt ni v trao i d liu gia
hai ng dng MS Excel v AutoCAD.
- Th tc khi ng AutoCAD t Microsoft Excel:
Public AcadApp as AcadApplication
Sub KhoidongAutoCAD()
On Error Resume Next

Tp ch Khoa hc Cng ngh Hng hi S 18 6/2009

70
Set AcadApp = GetObject(, AutoCAD.Application)
If Err then
Set AcadApp = CreateObject(AutoCAD.Application)
End If
AppActivate AcadAp.Caption
AcadApp.Visible = True
AcadApp.Application.WindowState = 2
AcadDoc.ActiveSpace = acModelSpace
If AcadApp.Documents.Count = 0 then
AcadApp.Documents.Add
End if
End Sub
- Th tc khi ng Microsoft Excel t AutoCAD:
Public ExcelApp as Excel.Application
Public Const Tenfile = D:\VMU\Khoa_hoc\2009\ChuongTrinhTinhBeRongLuongTau_PIANC.xls
Sub KhoidongExcel()
On Error Resume Next
Set ExcelApp = GetObject(, Excel.Application)
If Err then
Set ExcelApp = CreateObject(Excel.Application)
End if
ExcelApp.Visible = True
ExcelApp.Workbooks.Open (Tenfile)
AppActivate AutoCAD.Caption
End Sub
Khi ng dng c m, c th tham chiu n cc i tng bn trong Excel.Application (hay
AcadApplication) nh m t nh trong hnh 3.
















VBA Automation AcadApplication Excel.Application
ActiveDocument
Workbooks
Workbook
WorkSheets
WorkSheet
Range
Cells
ModelSpace
Lin
e
PolyLine
Text
Point
Mtex
t
Hatch
Text

Tp ch Khoa hc Cng ngh Hng hi S 18 6/2009

71
Hnh 3: M hnh tham chiu n cc i tng chnh trong Excel.Application v AcadApplication
- v mt on thng k hiu l DuongL (t hai im l StartPoint n EndPoint) trong bn
v AutoCAD ang kch hot (ActiveDocument) th s dng dng lnh sau:
Set DuongL =
AcadApplication.ActiveDocument.ActiveDocument.ModelSpace.AddLine(Startpoint, Endpoint)
- gn gi tr trong B2 bng 5 trong worksheet Ketquatinhtoan ca WorkBook
BerongPIANC.xls th s dng dng lnh sau:
Excel.Application.Workbooks("BerongPIANC.xls").Worksheets("Ketquatinhtoan").Range("B2").Valu
e= 5
Hai dng lnh trn s dng i tng AcadApplication v Excel.Application tham chiu
ti, cn cc i tng bn trong cng vi phng thc, thuc tnh ca chng c s dng nh
i tng VBA cha trong chng. Cng vic xy dng chng trnh c thc hin ng thi
trong VBA MS Excel v VBA AutoCAD c s so snh trong tng ng dng. Trong phm vi bi
bo ny khng th trnh by kt qu ni dung chng trnh, nu cn ni dung chi tit vui lng lin
lc trc tip vi tc gi (email: lsxinh@vnn.vn)
3. Kt lun
Chc nng Automation gip chng ta xy dng cc chng trnh c kh nng t ng ha
h tr vic t ng ha trao i d liu gia cc mi trng khc nhau trong MS Windows (nh
MS Word, MS Excel, MS Powerpoint, MS Access, AutoCAD,). S kt hp gia MS Excel vi
AutoCAD thng qua ngn ng lp trnh VBA tch hp bn trong c th c gii quyt c nhiu
bi ton khc nhau trong nhiu lnh vc k thut.
TI LIU THAM KHO
[1] AutoDesk, AutoCAD 2004 ActiveX and VBA Developerss Guide, Autodesk, 2004.
[2] Microsoft, Microsoft Visual Basic For Application Help, Microsoft, 2003.
[3] Joe Sutphin, AutoCAD 2004 VBA A Programmers Reference, Apress, 2004.
[4] PIANC, Approach Channels A Guide For Design, IHE-The Netherlands, 1997.


Mc nc chy tu thit k (1.62m)
Cao trnh y TK (-7.18m)
Mt ct ngang thit k
Lung mt chiu - Lung c che chn bo v
138m
314m
54m 30m 54

Tp ch Khoa hc Cng ngh Hng hi S 18 6/2009

72
Hnh 4: Kt qu mt ct ngang thit k s b theo chng trnh.

Ngi phn bin: TS. o Vn Tun

You might also like