一、VBA簡(jiǎn)介
Visual Basic for Applications(VBA)是 Visual Basic 的一種宏語(yǔ)言,是微軟開(kāi)發(fā)出來(lái)在其桌面應(yīng)用程序中執(zhí)行通用的自動(dòng)化 (OLE) 任務(wù)的編程語(yǔ)言。主要能用來(lái)擴(kuò)展 Windows 的應(yīng)用程序功能,特別是 Microsoft Office 軟件。在測(cè)量中常應(yīng)用 EXCEl 軟件進(jìn)行處理數(shù)據(jù),使用 VBA 能提高工作效率,保證準(zhǔn)確性。
EXCEl 軟件具有使用廣泛,操作簡(jiǎn)單,輸入數(shù)據(jù)簡(jiǎn)單,在我們測(cè)量工作日常中是不可缺少的工具,使用 EXCEl VBA 程序?qū)ξ覀児ぷ魅缁⑻硪?,大大?jiǎn)化了大量繁重的重復(fù)工作,實(shí)現(xiàn)自動(dòng)化。以下通過(guò)一個(gè)小程序,介紹EXCEl VBA 在測(cè)量工作中的應(yīng)用。
二、使用VBA展坐標(biāo)點(diǎn)
把現(xiàn)場(chǎng)實(shí)測(cè)坐標(biāo)點(diǎn)展到 CAD 圖是我們測(cè)量人員最常見(jiàn)的工作任務(wù),在平時(shí)測(cè)量中我們經(jīng)常要對(duì)實(shí)際地物畫(huà)成 CAD 電子圖,需要把現(xiàn)場(chǎng)采的點(diǎn)展到CAD 圖上然后根據(jù)實(shí)際地物外形連接成線(xiàn),畫(huà)出地物的外輪廓。這項(xiàng)工作雖然簡(jiǎn)單,但是需要我們測(cè)量人員細(xì)心,坐標(biāo)數(shù)字多,很容易看串行,輸入時(shí)要細(xì)心認(rèn)真核對(duì)才能保證數(shù)據(jù)準(zhǔn)確性,一旦坐標(biāo)點(diǎn)過(guò)多,是一種繁重、乏味的重復(fù)工作,極易出錯(cuò)。
一般常規(guī)方法是我們直接打開(kāi) CAD 用point 命定直接展點(diǎn),一個(gè)接一個(gè)輸入,工作效率底下。這種重復(fù)的勞動(dòng)我們使用 EXCEl VBA 輕松解決,提高工作效率。
我們以 office2007和 AutoCAD2008軟件作為演示軟件,需要安裝 Au- toCAD2008、office2007。首先打開(kāi) EXCEL 然后使用快捷鍵 Alt+F11即進(jìn)入VBAIDE,打開(kāi) VBA 界面,在菜單上依次點(diǎn)擊[插入]→[模塊],就可以進(jìn)行代碼編輯。代碼如下:
Sub ZDApp()
On Error Resume Next忽略錯(cuò)誤
Set acadApp = GetObject(, "AutoCAD.Application")檢查是否打開(kāi) CAD If Err Then
Err.Clear
MsgBox " 未檢測(cè)到打開(kāi)的 AutoCAD 繪圖環(huán)境!"
Set acadApp = CreateObject("AutoCAD.Application")打開(kāi) CAD 軟件
End If
Set acaddoc = acadApp.ActiveDocument定義 CAD 繪圖文件 Set MSpace = acaddoc.modelspace定義 CAD 繪圖空間 acadApp.Visible = True
Dim myline As Object Dim mytxt As Object Dim mydoc As Object Dim mylist() As Double
Dim myli(0To2) As Double
Set myrange = Worksheets(1).Range("B:B")
i = Application.WorksheetFunction.Count(myrange) ReDim Preserve mylist(0To2* i -1)重新定義數(shù)組 For j =2To i +1
mylist((j -2) *2) = Cells(j,3) 從 C2單元開(kāi)始讀取X 坐標(biāo)mylist((j -2) *2+1) = Cells(j,2) 從 B2單元開(kāi)始讀取X 坐標(biāo)myli(0) = Cells(j,3)
myli(1) = Cells(j,2)
Set mytxt = MSpace.AddText(Cells(j,1), myli,1) 繪制點(diǎn)號(hào)Next
Set myline = acaddoc.modelspace.AddLightWeightPolyline(mylist) 繪制成多段線(xiàn)
End Sub
點(diǎn)擊保存,在 excel 工作表1中從 B2單元格輸入 X 坐標(biāo),從 C2單元格輸入 Y 坐標(biāo)運(yùn)行ZDApp 程序,cad 中繪出所輸入坐標(biāo)點(diǎn)。
三、結(jié)束語(yǔ)
通過(guò)以上例子,使用 VBA 能大大提高我們?cè)谌粘y(cè)量工作效率和準(zhǔn)確性,本文只是拋磚引玉的作用,其他實(shí)際工作中遇到的問(wèn)題,可以通過(guò)學(xué)習(xí)編輯 VBA 程序?qū)崿F(xiàn),解放機(jī)械勞動(dòng),提高工作效率。
作者簡(jiǎn)介:
陽(yáng)純良(1990-),籍貫:湖南衡陽(yáng),職稱(chēng)學(xué)歷:助理工程師,大學(xué)本科,工作專(zhuān)業(yè):橋梁設(shè)計(jì)施工。