VBA在橋梁檢測(cè)數(shù)據(jù)處理中的應(yīng)用--軟件篇
2011-07-07 來(lái)源:中國(guó)橋梁網(wǎng)整理
 引言

    在橋梁建設(shè)中,開展新建橋梁竣工驗(yàn)收和已建橋梁運(yùn)營(yíng)期間的承載力評(píng)定工作,其最有效、最直接的方法就是橋梁荷載試驗(yàn)。荷載試驗(yàn)所獲得的原始數(shù)據(jù)、文字和圖像等重要資料,由于其數(shù)據(jù)總量龐大而不直觀,必須通過(guò)較為繁雜的數(shù)據(jù)處理、分析,得出可直接進(jìn)行橋梁結(jié)構(gòu)承載能力評(píng)定的指標(biāo),才能滿足承載力評(píng)定的需要。

    目前對(duì)荷載試驗(yàn)數(shù)據(jù)的處理,大部分機(jī)構(gòu)仍以手工計(jì)算為主,或雖有部分計(jì)算程序,但不夠系統(tǒng)和全面。一些應(yīng)用于工程后處理和報(bào)表生成的程序(如AutoCAD、Excel、Word等)所提供的普通功能已很難滿足交互式運(yùn)用和自動(dòng)化生成報(bào)表的需求 對(duì)于測(cè)試出的應(yīng)變進(jìn)行線性回歸分析后,若仍舊以手工繪制,既費(fèi)時(shí)費(fèi)力,也難以保證高速成圖的精度需要。為此,作者開發(fā)了一套橋梁荷載試驗(yàn)數(shù)據(jù)處理系統(tǒng),現(xiàn)將有關(guān)情況介紹如下。

    1 開發(fā)橋梁自動(dòng)化報(bào)表的過(guò)程及效果在對(duì)橋梁外業(yè)檢測(cè)獲得的一系列數(shù)據(jù)進(jìn)行內(nèi)業(yè)整理過(guò)程中,不僅需要翻閱一些規(guī)范和已有的參考資料,而且有時(shí)還要利用一些VB開發(fā)的小程序(例如不同梁高應(yīng)變值的一元線性回歸分析和圖表生成、混凝土回彈法測(cè)強(qiáng)的計(jì)算等)。這些小程序盡管也能節(jié)省計(jì)算時(shí)間,但由于沒有形成一個(gè)相對(duì)完整的系統(tǒng),隨機(jī)性大。屬于間歇式的非連續(xù)運(yùn)算,不僅使用非常不便,而且影響計(jì)算機(jī)高速運(yùn)算特性的發(fā)揮、增大了產(chǎn)生人為操作誤差的幾率。為此,我們通過(guò)各類功能的篩選和系統(tǒng)化處理,利用VBA的編程將各種計(jì)算融入Excel中完成,然后用OLE自動(dòng)化的方法將它們的結(jié)果調(diào)入Word中自動(dòng)生成報(bào)表。使橋梁檢測(cè)的后處理工作實(shí)現(xiàn)了軟件的系統(tǒng)化,不僅可在較短時(shí)間內(nèi)完成,而且提高了精度和效率。

    2 Excel中使用VBA編程處理數(shù)據(jù)簡(jiǎn)介Excel電子表格是目前應(yīng)用比較廣泛的軟件之一,具有較好的數(shù)據(jù)處理、圖表分析及使用各種函數(shù)、工具等功能。

    運(yùn)用Excel能輕松的處理我們平時(shí)需要大量計(jì)算的問題。而Excel VBA編程,則是一種基于Excel的VB在Win.(1ows環(huán)境下的開發(fā)應(yīng)用型語(yǔ)言。它是VB的一個(gè)子集,可以廣泛應(yīng)用于包括Excel在內(nèi)的各種軟件(例如AutoCAD、wor(1、Access等)。其中一個(gè)重要的概念就是“宏”。宏就是一種將你在程序中的操作進(jìn)行紀(jì)錄并以VBA代碼的形式顯 示的一系列動(dòng)作。

    下面介紹幾種常用的引用Excel單元格的方法:

    (1) 用編號(hào)引用單元格。下例中.Range(“B1”)返回工作表“sheet3”上的單元格“B1”,然后將其屬性值設(shè)為一個(gè)可以計(jì)算的表達(dá)式。

    例Sheet3.Range(一BI”)= ”:OFFSET(規(guī)范數(shù)據(jù)庫(kù)!J” & i& ”:P”& i& 。,0,2,I,I)”

    (2) VBA中的控件與事件。在VBA中與VB中同樣有控件和事件的概念??丶?,是一些對(duì)象的集合(如命令按 鈕);事件,可以相應(yīng)一系列的動(dòng)作(如單擊、雙擊等)。如下

    為一·個(gè)“選定”外觀的按鈕響應(yīng):,*BtnSure是一個(gè)命令按鈕*,Private Sub BtnSme Click()

    Dim i As Integer.temp As String,X1 As String,x2 As Integer,j As Integer,k As Integer,l As Integer/*lisXuanDing為一個(gè)列表框,記錄選擇狀態(tài)*/For 1 = 0 To Sheet4.1isXuanDing.ListCount一1temp Sheet4.1isXuanDing.List(Sheet4.1isXD.ListCoant一1 一1)

    xl= Trim(Left(temp,Len(temp)一3))

    x2 = common.zhuanhuan(Right(temp,3))

    For i= 24 To 70 If Shee~.Range( 丁’&i)=x2 And Sheet2.Range(⋯K’& i)= xlThen With Sheet4.Range(”11:11”).Insea.Range(”11:11”).RowHeight= 50.Range(⋯B’& 11+ k& ”:”& ⋯C’& 11+ k).Merge.Range(⋯B’& 11+ k)= xl End With.Range(”D”&11+ k& ”:”& ⋯E’& 11+ k).Merge /*規(guī)范數(shù)據(jù)庫(kù)內(nèi)含檢測(cè)用數(shù)據(jù)*/.Range(”D”&11+ k)= ”=0FFsET(規(guī)范數(shù)據(jù)庫(kù)!J..&i&”: ’&i& ”,0,2,1,1)”

    3 橋梁檢測(cè)自動(dòng)化報(bào)表系統(tǒng)的組成及各部功能該系統(tǒng)主要由Excel數(shù)據(jù)處理模塊、AutoCAD圖形編輯模塊、OLE自動(dòng)化Word報(bào)表生成模塊等三部分組成。其中,Excd數(shù)據(jù)處理模塊是核心。它包含了數(shù)據(jù)庫(kù)、計(jì)算程序、與AutoCAD和Word之間用VBA調(diào)用的協(xié)調(diào)功能。Excel中數(shù)據(jù)單元的定位、主要檢測(cè)模塊的組成如下:

    (1) 橋梁概況:用于輸入橋梁的基本資料(如檢測(cè)單位、報(bào)告標(biāo)題、結(jié)構(gòu)形式、跨徑等)。其中一些標(biāo)準(zhǔn)跨徑橋的數(shù)據(jù),已經(jīng)輸入后面的規(guī)范數(shù)據(jù)庫(kù)表,可以直接用下拉列表框選擇。

    (2) 外觀檢查:此模塊的功能是將外業(yè)所得的外觀狀況與實(shí)際規(guī)范中描述方式進(jìn)行對(duì)比后,以表格的模式整體輸出。

    (3) 荷載準(zhǔn)備:該模塊是將橋梁檢測(cè)中所用到的規(guī)范進(jìn)行選取。結(jié)果生成表格的形式報(bào)表。

    (4) 撓度檢查:填寫荷載試驗(yàn)的撓度變化情況,讓程序自動(dòng)進(jìn)行數(shù)據(jù)統(tǒng)計(jì)生成報(bào)表。

    (5) 回彈計(jì)算表:橋梁檢測(cè)中一項(xiàng)重要工作就是用回

    彈法對(duì)混凝土強(qiáng)度進(jìn)行檢測(cè) 針對(duì)回彈法檢測(cè)后數(shù)據(jù)處理(包括表格中數(shù)值內(nèi)插求解)十分繁瑣的實(shí)際情況,筆者使用VBA編程進(jìn)行了處理,可快捷的獲得測(cè)區(qū)混凝土各項(xiàng)數(shù)據(jù)。

    (6) 應(yīng)變測(cè)試:該模塊的功能是沿橋梁的某個(gè)截面高度進(jìn)行測(cè)試,然后對(duì)得到的應(yīng)變數(shù)據(jù)做一元線性回歸分析并自動(dòng)生成圖表。進(jìn)而由回歸直線反推出梁頂、梁底的應(yīng)變值并標(biāo)注干圖表中。

    (7) 測(cè)試儀器及結(jié)果分析:填寫檢測(cè)用到的儀器,并對(duì)檢測(cè)的結(jié)果評(píng)定。

    4 報(bào)表的生成

    本系統(tǒng)使用了基于Word的模板,用VBA編程和OLE自動(dòng)化的技術(shù)直接將Excel數(shù)據(jù)生成Word文檔報(bào)表。該word模板文件用標(biāo)簽對(duì)Excel傳遞來(lái)的數(shù)據(jù)進(jìn)行定位,然后通過(guò)VBA中編程調(diào)用。具體的實(shí)現(xiàn)過(guò)程如下:

    (1) 首先啟動(dòng)Microsoft w0rd 2000,在要插人數(shù)據(jù)的位置鍵人書簽名(例如[項(xiàng)目名]),然后將整個(gè)“[項(xiàng)目名]""選中,通過(guò)菜單的插入/書簽,彈出“書簽”對(duì)話框,輸入一個(gè)書簽名。

    (2) 在Excel中具體的VBA代碼如下 】:/*appWord、appWordDocument Excel中操縱的Word對(duì)象*/Dim appWord As WoM .ApplicationDim appWordDocument As Word.Document/*appWordRange、WordSelefion Word對(duì)象的一個(gè)選區(qū)*/Dim appWordRange As Word .RangeDim WordSelection As Wl0rd.Selection/*Sheetl3.CDG2為通用對(duì)話框,用于選擇模板文件的位置 *,Sheetl3.CDG2.Filter= ”報(bào)告文件(*.dot)1*.dot”Sheetl3.CDG2.ShowOpen tempPath = Sheetl 3.CDG2.FileNameSet appW ord = New W【)rd.Application /*調(diào)用appWord的wom對(duì)象打開模板*/With appWord . Documents.Open FileName:=tempPathEnd With appWord.Visible= True/*顯示W(wǎng)ord對(duì)象*/

    /*定位到Word模板中書簽的位置*/appWord.Selection.GoTo wdGoToBookmark,,,”項(xiàng)目名” /*傳遞Excel數(shù)據(jù)到該書簽位置*/appW ord .Selection.TypeText

    5 系統(tǒng)的特點(diǎn)

    本橋梁荷載實(shí)驗(yàn)數(shù)據(jù)處理系統(tǒng)有三個(gè)主要特點(diǎn):一是,本系統(tǒng)W(Jrd模板的編制可得到一個(gè)統(tǒng)一的報(bào)表格式,省去了以往每次都對(duì)報(bào)表格式進(jìn)行調(diào)整的麻煩;二是,將原有分散獨(dú)立的功能模塊集成到一個(gè)統(tǒng)一環(huán)境下,使操作更為簡(jiǎn)便;三是,引入VBA編程和OLE 自動(dòng)化的概念,使得各種程序計(jì)算和報(bào)表能自動(dòng)進(jìn)行。

    6 結(jié)語(yǔ)

    本系統(tǒng)經(jīng)過(guò)篩選、集成和系統(tǒng)化形成了環(huán)境統(tǒng)一的完整系統(tǒng),使得橋梁檢測(cè)數(shù)據(jù)處理變得簡(jiǎn)便,加快了內(nèi)業(yè)報(bào)表處理的速度。大幅度縮短了從外業(yè)檢測(cè)到報(bào)表輸出的時(shí)間和周期 通過(guò)實(shí)際應(yīng)用證明,其結(jié)果可靠,操作簡(jiǎn)便,快速高效,具有較強(qiáng)的實(shí)用意義和前景。

    參考文獻(xiàn)

    [1] 宋一凡.公路橋梁荷載試驗(yàn)與結(jié)構(gòu)評(píng)定[M].北京:人民交通出版社.2002.

    [2] 王成春,蕭雅云、實(shí)戰(zhàn)Exce1 2000 VBA程序設(shè)計(jì)實(shí)務(wù)[M].北京:中國(guó)鐵道出版社,2003.
Copyright © 2007-2022 cnbridge.cn All Rights Reserved
服務(wù)熱線:010-64708566 法律顧問:北京君致律師所 陳棟強(qiáng)
ICP經(jīng)營(yíng)許可證100299號(hào) 京ICP備10020099號(hào)  京公網(wǎng)安備 11010802020311號(hào)