VBA在桥梁检测数据处理中的应用--软件篇
2011-07-07 来源:中国桥梁网整理
引言
在桥梁建设中,开展新建桥梁竣工验收和已建桥梁运营期间的承载力评定工作,其最有效、最直接的方法就是桥梁荷载试验。荷载试验所获得的原始数据、文字和图像等重要资料,由于其数据总量庞大而不直观,必须通过较为繁杂的数据处理、分析,得出可直接进行桥梁结构承载能力评定的指标,才能满足承载力评定的需要。
目前对荷载试验数据的处理,大部分机构仍以手工计算为主,或虽有部分计算程序,但不够系统和全面。一些应用于工程后处理和报表生成的程序(如AutoCAD、Excel、Word等)所提供的普通功能已很难满足交互式运用和自动化生成报表的需求 对于测试出的应变进行线性回归分析后,若仍旧以手工绘制,既费时费力,也难以保证高速成图的精度需要。为此,作者开发了一套桥梁荷载试验数据处理系统,现将有关情况介绍如下。
1 开发桥梁自动化报表的过程及效果在对桥梁外业检测获得的一系列数据进行内业整理过程中,不仅需要翻阅一些规范和已有的参考资料,而且有时还要利用一些VB开发的小程序(例如不同梁高应变值的一元线性回归分析和图表生成、混凝土回弹法测强的计算等)。这些小程序尽管也能节省计算时间,但由于没有形成一个相对完整的系统,随机性大。属于间歇式的非连续运算,不仅使用非常不便,而且影响计算机高速运算特性的发挥、增大了产生人为操作误差的几率。为此,我们通过各类功能的筛选和系统化处理,利用VBA的编程将各种计算融入Excel中完成,然后用OLE自动化的方法将它们的结果调入Word中自动生成报表。使桥梁检测的后处理工作实现了软件的系统化,不仅可在较短时间内完成,而且提高了精度和效率。
2 Excel中使用VBA编程处理数据简介Excel电子表格是目前应用比较广泛的软件之一,具有较好的数据处理、图表分析及使用各种函数、工具等功能。
运用Excel能轻松的处理我们平时需要大量计算的问题。而Excel VBA编程,则是一种基于Excel的VB在Win.(1ows环境下的开发应用型语言。它是VB的一个子集,可以广泛应用于包括Excel在内的各种软件(例如AutoCAD、wor(1、Access等)。其中一个重要的概念就是“宏”。宏就是一种将你在程序中的操作进行纪录并以VBA代码的形式显 示的一系列动作。
下面介绍几种常用的引用Excel单元格的方法:
(1) 用编号引用单元格。下例中.Range(“B1”)返回工作表“sheet3”上的单元格“B1”,然后将其属性值设为一个可以计算的表达式。
例Sheet3.Range(一BI”)= ”:OFFSET(规范数据库!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为一个列表框,记录选择状态*/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 /*规范数据库内含检测用数据*/.Range(”D”&11+ k)= ”=0FFsET(规范数据库!J..&i&”: ’&i& ”,0,2,1,1)”
3 桥梁检测自动化报表系统的组成及各部功能该系统主要由Excel数据处理模块、AutoCAD图形编辑模块、OLE自动化Word报表生成模块等三部分组成。其中,Excd数据处理模块是核心。它包含了数据库、计算程序、与AutoCAD和Word之间用VBA调用的协调功能。Excel中数据单元的定位、主要检测模块的组成如下:
(1) 桥梁概况:用于输入桥梁的基本资料(如检测单位、报告标题、结构形式、跨径等)。其中一些标准跨径桥的数据,已经输入后面的规范数据库表,可以直接用下拉列表框选择。
(2) 外观检查:此模块的功能是将外业所得的外观状况与实际规范中描述方式进行对比后,以表格的模式整体输出。
(3) 荷载准备:该模块是将桥梁检测中所用到的规范进行选取。结果生成表格的形式报表。
(4) 挠度检查:填写荷载试验的挠度变化情况,让程序自动进行数据统计生成报表。
(5) 回弹计算表:桥梁检测中一项重要工作就是用回
弹法对混凝土强度进行检测 针对回弹法检测后数据处理(包括表格中数值内插求解)十分繁琐的实际情况,笔者使用VBA编程进行了处理,可快捷的获得测区混凝土各项数据。
(6) 应变测试:该模块的功能是沿桥梁的某个截面高度进行测试,然后对得到的应变数据做一元线性回归分析并自动生成图表。进而由回归直线反推出梁顶、梁底的应变值并标注干图表中。
(7) 测试仪器及结果分析:填写检测用到的仪器,并对检测的结果评定。
4 报表的生成
本系统使用了基于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对象的一个选区*/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 系统的特点
本桥梁荷载实验数据处理系统有三个主要特点:一是,本系统W(Jrd模板的编制可得到一个统一的报表格式,省去了以往每次都对报表格式进行调整的麻烦;二是,将原有分散独立的功能模块集成到一个统一环境下,使操作更为简便;三是,引入VBA编程和OLE 自动化的概念,使得各种程序计算和报表能自动进行。
6 结语
本系统经过筛选、集成和系统化形成了环境统一的完整系统,使得桥梁检测数据处理变得简便,加快了内业报表处理的速度。大幅度缩短了从外业检测到报表输出的时间和周期 通过实际应用证明,其结果可靠,操作简便,快速高效,具有较强的实用意义和前景。
参考文献
[1] 宋一凡.公路桥梁荷载试验与结构评定[M].北京:人民交通出版社.2002.
[2] 王成春,萧雅云、实战Exce1 2000 VBA程序设计实务[M].北京:中国铁道出版社,2003.