VBA在橋梁檢測數據處理中的應用--軟件篇
2011-07-07 來源:中國橋梁網整理
引言
在橋梁建設中,開展新建橋梁竣工驗收和已建橋梁運營期間的承載力評定工作,其最有效、最直接的方法就是橋梁荷載試驗。荷載試驗所獲得的原始數據、文字和圖像等重要資料,由于其數據總量龐大而不直觀,必須通過較為繁雜的數據處理、分析,得出可直接進行橋梁結構承載能力評定的指標,才能滿足承載力評定的需要。
目前對荷載試驗數據的處理,大部分機構仍以手工計算為主,或雖有部分計算程序,但不夠系統(tǒng)和全面。一些應用于工程后處理和報表生成的程序(如AutoCAD、Excel、Word等)所提供的普通功能已很難滿足交互式運用和自動化生成報表的需求 對于測試出的應變進行線性回歸分析后,若仍舊以手工繪制,既費時費力,也難以保證高速成圖的精度需要。為此,作者開發(fā)了一套橋梁荷載試驗數據處理系統(tǒng),現將有關情況介紹如下。
1 開發(fā)橋梁自動化報表的過程及效果在對橋梁外業(yè)檢測獲得的一系列數據進行內業(yè)整理過程中,不僅需要翻閱一些規(guī)范和已有的參考資料,而且有時還要利用一些VB開發(fā)的小程序(例如不同梁高應變值的一元線性回歸分析和圖表生成、混凝土回彈法測強的計算等)。這些小程序盡管也能節(jié)省計算時間,但由于沒有形成一個相對完整的系統(tǒng),隨機性大。屬于間歇式的非連續(xù)運算,不僅使用非常不便,而且影響計算機高速運算特性的發(fā)揮、增大了產生人為操作誤差的幾率。為此,我們通過各類功能的篩選和系統(tǒng)化處理,利用VBA的編程將各種計算融入Excel中完成,然后用OLE自動化的方法將它們的結果調入Word中自動生成報表。使橋梁檢測的后處理工作實現了軟件的系統(tǒng)化,不僅可在較短時間內完成,而且提高了精度和效率。
2 Excel中使用VBA編程處理數據簡介Excel電子表格是目前應用比較廣泛的軟件之一,具有較好的數據處理、圖表分析及使用各種函數、工具等功能。
運用Excel能輕松的處理我們平時需要大量計算的問題。而Excel VBA編程,則是一種基于Excel的VB在Win.(1ows環(huán)境下的開發(fā)應用型語言。它是VB的一個子集,可以廣泛應用于包括Excel在內的各種軟件(例如AutoCAD、wor(1、Access等)。其中一個重要的概念就是“宏”。宏就是一種將你在程序中的操作進行紀錄并以VBA代碼的形式顯 示的一系列動作。
下面介紹幾種常用的引用Excel單元格的方法:
(1) 用編號引用單元格。下例中.Range(“B1”)返回工作表“sheet3”上的單元格“B1”,然后將其屬性值設為一個可以計算的表達式。
例Sheet3.Range(一BI”)= ”:OFFSET(規(guī)范數據庫!J” & i& ”:P”& i& 。,0,2,I,I)”
(2) VBA中的控件與事件。在VBA中與VB中同樣有控件和事件的概念。控件,是一些對象的集合(如命令按 鈕);事件,可以相應一系列的動作(如單擊、雙擊等)。如下
為一·個“選定”外觀的按鈕響應:,*BtnSure是一個命令按鈕*,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為一個列表框,記錄選擇狀態(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ī)范數據庫內含檢測用數據*/.Range(”D”&11+ k)= ”=0FFsET(規(guī)范數據庫!J..&i&”: ’&i& ”,0,2,1,1)”
3 橋梁檢測自動化報表系統(tǒng)的組成及各部功能該系統(tǒng)主要由Excel數據處理模塊、AutoCAD圖形編輯模塊、OLE自動化Word報表生成模塊等三部分組成。其中,Excd數據處理模塊是核心。它包含了數據庫、計算程序、與AutoCAD和Word之間用VBA調用的協(xié)調功能。Excel中數據單元的定位、主要檢測模塊的組成如下:
(1) 橋梁概況:用于輸入橋梁的基本資料(如檢測單位、報告標題、結構形式、跨徑等)。其中一些標準跨徑橋的數據,已經輸入后面的規(guī)范數據庫表,可以直接用下拉列表框選擇。
(2) 外觀檢查:此模塊的功能是將外業(yè)所得的外觀狀況與實際規(guī)范中描述方式進行對比后,以表格的模式整體輸出。
(3) 荷載準備:該模塊是將橋梁檢測中所用到的規(guī)范進行選取。結果生成表格的形式報表。
(4) 撓度檢查:填寫荷載試驗的撓度變化情況,讓程序自動進行數據統(tǒng)計生成報表。
(5) 回彈計算表:橋梁檢測中一項重要工作就是用回
彈法對混凝土強度進行檢測 針對回彈法檢測后數據處理(包括表格中數值內插求解)十分繁瑣的實際情況,筆者使用VBA編程進行了處理,可快捷的獲得測區(qū)混凝土各項數據。
(6) 應變測試:該模塊的功能是沿橋梁的某個截面高度進行測試,然后對得到的應變數據做一元線性回歸分析并自動生成圖表。進而由回歸直線反推出梁頂、梁底的應變值并標注干圖表中。
(7) 測試儀器及結果分析:填寫檢測用到的儀器,并對檢測的結果評定。
4 報表的生成
本系統(tǒng)使用了基于Word的模板,用VBA編程和OLE自動化的技術直接將Excel數據生成Word文檔報表。該word模板文件用標簽對Excel傳遞來的數據進行定位,然后通過VBA中編程調用。具體的實現過程如下:
(1) 首先啟動Microsoft w0rd 2000,在要插人數據的位置鍵人書簽名(例如[項目名]),然后將整個“[項目名]""選中,通過菜單的插入/書簽,彈出“書簽”對話框,輸入一個書簽名。
(2) 在Excel中具體的VBA代碼如下 】:/*appWord、appWordDocument Excel中操縱的Word對象*/Dim appWord As WoM .ApplicationDim appWordDocument As Word.Document/*appWordRange、WordSelefion Word對象的一個選區(qū)*/Dim appWordRange As Word .RangeDim WordSelection As Wl0rd.Selection/*Sheetl3.CDG2為通用對話框,用于選擇模板文件的位置 *,Sheetl3.CDG2.Filter= ”報告文件(*.dot)1*.dot”Sheetl3.CDG2.ShowOpen tempPath = Sheetl 3.CDG2.FileNameSet appW ord = New W【)rd.Application /*調用appWord的wom對象打開模板*/With appWord . Documents.Open FileName:=tempPathEnd With appWord.Visible= True/*顯示Word對象*/
/*定位到Word模板中書簽的位置*/appWord.Selection.GoTo wdGoToBookmark,,,”項目名” /*傳遞Excel數據到該書簽位置*/appW ord .Selection.TypeText
5 系統(tǒng)的特點
本橋梁荷載實驗數據處理系統(tǒng)有三個主要特點:一是,本系統(tǒng)W(Jrd模板的編制可得到一個統(tǒng)一的報表格式,省去了以往每次都對報表格式進行調整的麻煩;二是,將原有分散獨立的功能模塊集成到一個統(tǒng)一環(huán)境下,使操作更為簡便;三是,引入VBA編程和OLE 自動化的概念,使得各種程序計算和報表能自動進行。
6 結語
本系統(tǒng)經過篩選、集成和系統(tǒng)化形成了環(huán)境統(tǒng)一的完整系統(tǒng),使得橋梁檢測數據處理變得簡便,加快了內業(yè)報表處理的速度。大幅度縮短了從外業(yè)檢測到報表輸出的時間和周期 通過實際應用證明,其結果可靠,操作簡便,快速高效,具有較強的實用意義和前景。
參考文獻
[1] 宋一凡.公路橋梁荷載試驗與結構評定[M].北京:人民交通出版社.2002.
[2] 王成春,蕭雅云、實戰(zhàn)Exce1 2000 VBA程序設計實務[M].北京:中國鐵道出版社,2003.