基于Excel的VBA在大坝变形监测中的应用
来源:用户上传
作者: 张永花
摘要:本文结合三峡大坝部分变形监测项目的特点和实际问题,介绍VBA的功能及其在数据处理自动化方面的应用。
关键词:变形监测;Excel;VBA;数据处理;应用。
中图分类号:TP274 文献标识码:A
1 引言
随着传统测绘技术向数字化测绘技术转化,测量技术的数据采集和处理的自动化,测量数据处理软件是层出不穷,但每一个软件不可能面面俱到也并不一定适合自己所用,因此根据工作的实际情况和需要因地制宜的应用如VBA等技术进行开发,使烦琐的计算简单化、自动化是十分有必要的。
2 变形监测的任务特点
变形监测的任务就是周期性地对观测点进行重复观测,取得大量的外业原始数据进行内业处理,最后进行成果的分析,其特点就是周期性和重复性。而VBA的功能之一就是可以将重复计算操作自动化。将重复而复杂的烦琐计算过程自动化,能够大大提高计算效率和准确率。
3 Excel表的特点及VBA简介
3.1 Excel表的特点。强有力的人性化设计及新的个性化的菜单和工具栏,使用户的操作更加得心应手; Excel将工作表组织成为工作薄,使表格处理单表扩充为多表,具有非常的数据处理能力; Excel允许在工作表中使用公式和函数,大大简化了Excel的数据计算工作,Excel提供的函数有11大类300余种,其数据分析功能超过了一般PC机数据管理系统。
3.2 VBA。VBA是指Visual Basic for Application。它是在Office中使用的宏语言,主要为了增强Word、Excel等软件的自动化能力。更确切地讲,它是一种自动化语言,它可以使常用的程序自动化,可以创建自定义的解决方案。
3 VBA可以实现的功能
使重复的任务自动化;简化模板的使用;自定义excel,使其成为开发平台;对数据进行复杂的操作和分析
4 VBA的语法
4.1 VBA是非常流行的应用程序开发语言vasual basic 的子集,其语法和vasual basic相同,用vasual basic开发应用程序,一半的工作是编写一些基本功能的模块,包括文件的打开和保存,打印,复制等。而用excel作为开发平台用VBA,则由于excel已经具备这些基本功能,你要做的只是使用它。
4.2 可以在嵌入Excel的vasual basi编辑器中编制程序,并进行调试。
5 VBA的应用
变形监测成果反映大坝变化规律,是保证工程安全施工、蓄水和水工建筑物安全运行的一项重要措施,也是验证设计的主要手段之一,因此在外业采集大量翔实可靠的基础上进行快速、准确的内业处理至关重要。具有强大的功能的Excel和VBA技术可以帮我们实现数据处理的自动化,并能达到计算表格和成果报表严格统一、规范化的要求。
5.1 在水平位移观测数据处理中的应用:正倒垂线观测是进行大坝水平位移监测的重要手段之一,其测点固定、观测精度高、观测周期短并且计算过程烦琐,应用VBA技术进行编程开发Excel的强大功能,使这一计算过程自动化。编程代码简单但是实用、省时、省力并且不易出错。编写程序代码前根据正到垂线计算的过程以及相关的资料整理要求,事先建立原始记录表.xls,垂线观测成果计算表.xls,正倒垂线测量成果报表.xls三个Excel模板文档以便在计算过程中自动调用。此处理程序包含有两个窗体:a观测信息输入窗体也是程序运行的启动窗体,可以输入观测次数、日期等信息;b 原始数据输入窗体,正倒垂线测点之间计算关系密切,测点的建造日期不同使得每个测点的标准零位差不同,廊道内观测路线的不同等,因此测点的观测顺序和计算顺序不一致,要查找测点名输入其观测数据很麻烦,此窗体模块能根据输入的数据进行自动查找对号入座。三个主要模块:a 数据传送,调用原始记录表.xls,将输入的原始数据进行初步计算处理并按标准格式录入原始记录表中。b 计算,调用垂线观测成果计算表.xls,将原始记录表中经过处理的数据按点名一一对应并按垂线观测表的格式录入其中进行计算。c生成报表,调用正倒垂线测量成果报表.xl。
程序代码在此不在赘述,但有一函数不能不提。变形监测精度高,观测数据小数位数取位也要求相当严格,Excel中内置的小数取位函数不能满足单进双不进的要求,为此可以定义这样一个函数:
Function JJEQ (NUM As Currency, N As Integer) As Double
Dim NUM1, NUM2 As Integer
If NUM >= 0 Then F = 1 Else F = -1
NUM = Abs(NUM)
NUM1 = Int((NUM * 10 ^ (N - 1) - Int(NUM * 10 ^ (N - 1))) * 10)
NUM2 = Int((NUM * 10 ^ N - Int(NUM * 10 ^ N)) * 10)
If NUM2 < 5 Then
JJEQ = F * Int(NUM * 10 ^ N) * 10 ^ (-N)
ElseIf NUM2 = 5 Then
If NUM1 Mod 2 = 0 Then JJEQ = F * Int(NUM * 10 ^ N) * 10 ^ (-N) Else JJEQ = F * (Int(NUM * 10 ^ N) + 1) * 10 ^ (-N)
ElseIf NUM2 > 5 Then
JJEQ = F * (Int(NUM * 10 ^ N) + 1) * 10 ^ (-N)
End If
End Function
自定义的函数不仅可以在程序中调用而且能够像Excel电子表格的内置函数一样在计算表中方便使用,并且可以根据需要和具体情况进行优化改编。同样Excel电子表格本身无法直接计算60进制的三角函数,如定义度分秒与度之间相互转化的函数将会非常实用。
5.2 在垂直位移观测数据处理中的应用:精密水准测量是取得大坝垂直位移的主要方法,面对上百座的精密水准标,用手工进行观测记录已经跟不上需要,很难能在一定周期内及时反映大坝的沉陷情况,基于PC-E500的basica自动记录程序和VBA数据处理程序发挥着及其重要的作用。水准数据处理的VBA程序事件方法为:建立原始记录的Excel模板文档,高差计算表,在高差表中按水准闭合路线依次输入已有水准标的名称;打开原始记录文件,读取数据;将读取的数据表格化,即赋值到原始记录模板文档相应的单元格中;从原始记录表中摘录观测高差,对应点名赋值到高差计算表中,这个过程是此处理程序的优势所在,省去了手工进行摘录的诸多不便和麻烦;按进行平查计算时数据格式的要求生成平查数据。一系列的自动化过程,可以轻松完成大量的烦琐计算。
6 结束语
VBA是Microsoft Office套装办公软件的一个重要组件,利用该组件可以使许多烦琐、机械的日常工作得以实现,并通过各种精美的界面和实用的控件将用户创建的应用程序封装在一起,从而极大的提高工作效率以及应用程序的实用性。VBA在Excel环境中,几乎是一个万能的工具,可通过建立功能强大的宏指令来扩展或模拟Excel的全部功能,因此有待于我们深入的学习和探讨。
参考文献
[1]《Excel 2000 VBA开发实例指南》
转载注明来源:https://www.xzbu.com/8/view-1069752.htm