EXCEL在建筑工程资料管理中的应用.docx
《EXCEL在建筑工程资料管理中的应用.docx》由会员分享,可在线阅读,更多相关《EXCEL在建筑工程资料管理中的应用.docx(14页珍藏版)》请在冰点文库上搜索。
EXCEL在建筑工程资料管理中的应用
EXCEL在建筑工程资料管理中的应用
作者:
尹帮军
摘要:
借助Excel的另一个强大功能,那就是Vba函数,对表格进行改进,改进后的表格将多张表融入一张工作表中,并借助一个编辑窗口对其进行控制。
MicrosoftExcel是一个功能强大的表格软件,而VBA函数却是Excel二次开发的利器,我们通过它可以解决很多工程中遇到的实际问题。
关键词:
建筑工程、资料管理、Excel、VBA
正文:
1.简述建筑工程资料管理存在的问题
1.1.资料管理的定义
建筑工程资料,是在工程建设过程中形成的各种形式的信息记录,包括基建文件、监理资料、施工资料和竣工图。
1.2.资料管理存在的问题
建筑工程资料的管理由取得相应上岗资格的专人进行管理,资料是随着工程的进展逐渐形成,而工程的工期少则数月,多则数年,一个工程有各种各样不同类型的资料,平时我们一般对其进行分门另类的汇总,查找也较为方便,可我们发现当资料的数量越来越多了以后,尽管分门另类了,查找起来也较为费劲。
平时我们的资料放在文件盒里,都会登记在卷内目录上,查找时可查看目录上的文件名称,在查找资料。
可资料多了以后,文件盒也多了,可能在你急需找文件的时候,总是要打开好几个盒子才找得到。
平时我们的资料外借或是传发一般都会用到收发文簿,可当资料多了以后,也很难找到资料的去向,不便实时体显资料的去向和数量等详细情况。
由于资料积累时间较长,可能在资料收集期间进行了人员的调动,后接手的人员,就不一定清楚前期资料的情况。
若是突然要用到某份资料的时候,都不知从何找起。
2.Excel介绍
2.1.何为Excel:
Excel是MicrosoftOfficesystem中的电子表格程序。
您可以使用Excel创建工作簿(电子表格集合)并设置工作簿格式,以便分析数据和做出更明智的业务决策。
特别是,您可以使用Excel跟踪数据,生成数据分析模型,编写公式以对数据进行计算,以多种方式透视数据,并以各种具有专业外观的图表来显示数据。
2.2.什么是VBA
VisualBasicforApplications(VBA)是一种VisualBasic的一种宏语言,主要能用来扩展Windows的应用程式功能,特别是MicrosoftOffice软件。
也可说是一种应用程式视觉化的BasicScript。
1994年发行的Excel5.0版本中,即具备了VBA的宏功能。
3.对资料管理问题的分析
建筑工程资料管理中出现问题的主要原因是资料的动态性和积累时间的长期性。
举个例子,某建筑工程,2009年3月开工,2010年9月因前任资料辞职,资料员小吴就从其它工地调到这里,10月在上级部门检查时,提出要查看施工合同,这时发现现场资料柜里找不到施工合同,按理说合同一般是一式8份,施工单位肯定是有一份或多份的,怎么会找不到了呢。
后来资料员小吴经过多方询问才发现业主单位签字时留下4份,监理单位有1份,项管单位有1份,施工单位总部财务部有2份,所以现场1份也没有了。
上述案例中,我们发现同一份资料存放于多个地方,由于多种原因同一单位留有多份资料。
有时某些资料可能只是暂时借出使用,可能因为其它原因忘记归还了,以至没有及时登记,导致不知道资料到底去了哪里,这是由于资料的动态性导致的。
继上述案例,2010年11月5日,项目经理叫资料员小吴找一份“加油证明”资料,由于此资料当时并不重要,并没有引起重视,但现在必须要找到,因其牵扯到劳务班组的费用问题,实然要查找一份当时并不重要的资料,实在有点难度,小吴用2个小时才从一个盒子的一大堆资料中找出来。
从上述的案例中我们发现有时要查找一份很久没有使用,可能一点印象也没有的资料时,大家往往手忙脚乱,从一大堆资料中的逐份清找,即耗费时间,又耽误事情。
有时我们也发现用收发簿登记资料时,一般是对重要的资料进行登记。
4.用Excel解决的方法
我们可以用Excel建一张电子表格进行资料的统计,我想这个工作很多人都会做,其表格的一般格式如表1,由序号、名称、数量、日期、备注组成。
我们可以用表1进行资料统计管理,以便日后的查找,我们可以对每一个资料盒建一张表格。
可是我们也发现资料数量多了以后,盒子也多了,一个工作薄中就有许多张表格,查找的时间发现也不是很方便。
表1
此时,我们可以借助Excel的另一个强大功能,那就是vba函数对表1进行改进,改进后的表格将多张表融入一张工作表中,并借助一个编辑窗口对其进行控制。
从窗口1中我们发现此窗口由查找及信息、初始统计、信息修改、收发登记、编辑五个分窗口组成。
查找及信息窗口,可以采用模糊查找方式对所有登记的资料进行快速查找,并能快速定位资料的位置及登记人和最后修改人的情况,还可以指定特定资料盒,查看里面所有的资料情况。
此编窗口就是借助Vba强大的函数功能来实现的,首先我们创建一个窗口文件,按照需要对其创建各个组件,并对其进行布置,这个过程,我们应该从要解决的问题出发,先列好程序框架图,然后再着手编辑代码进行逐个破解,最后对程序进行调试。
本工程的编程程序图如下:
4.1.查找及信息
窗口1中最主要的代码置于“包含(可用首字母)”的输入框的change()事件内,其主要代码如下:
DimiiAsInteger
DimlggAsBoolean
DimmysAsString
Me.ListBox2.Clear
OnErrorResumeNext
WithMe.TextBox4
mys=Replace(.Value,"","*")
mys=lc(mys)
EndWith
Forii=38Ton
IfAsc(Mid$(Me.TextBox4.Value,1,1))>255OrAsc(Mid$(Me.TextBox4.Value,1,1))<0Then
sj="*"&UCase(Cells(ii,srn).Value)&"*"
sr=Replace(Me.TextBox4.Value,"","*")
sr="*"&UCase(sr)&"*"
IfsjLikesrAndCells(ii,srn).Value<>""Then
Me.ListBox2.AddItemCells(ii,srn).Value&"-000"&ii
EndIf
Else
sj="*"&UCase(lc(Cells(ii,srn).Value))&"*"
sr="*"&UCase(mys)&"*"
IfsjLikesrAndCells(ii,srn).Value<>""Then
Me.ListBox2.AddItemCells(ii,srn).Value&"-000"&ii
EndIf
EndIf
Nextii
此段代码中我们用到了vba中的For……Next循环函数,通过这个函数,我们可以对一定范围内的单元格进行逐个比对,比对时我们用到了
IfconditionThen
[statements]
[Else
[elsestatements]]
EndIf
函数,这个函数通过对condition的计算,返回true或false进行选择,当结果为true时,执行[statements],否则执行[elsestatements]。
这样我们就可以按要求进行筛选,并将符合要求的内容放于右侧的列表框内,通过双击列表框内的文件名对其进行定位,双击事件代码如下:
OnErrorResumeNext
DimfvvAsVariant
cnh=Val(Right(ListBox1.Value,5))
Cells(cnh,6).SetFocus
这段代码中我们用vba函数中的Right()函数取得指定文件的行号,通过setfocus函数将焦点置于指定的单元格位置。
窗口1
4.2.初始登计
初始登记窗口,是对资料的初次登记,登记包括文件名称,存放位置,登记时间,登记者姓名,数量,备注等内容。
此窗口的重点是“登记”按钮,此按按钮中包括了许多代码,其中最重要的代码如下:
Cells(djr,6)=Me.TextBox4.Value
Cells(djr,9)=Me.TextBox21.Value
Cells(djr,10)=Me.TextBox19.Value
Cells(djr,11)=Me.TextBox10.Value
Cells(djr,12)=Me.TextBox11.Value
Cells(djr,17)=Me.ComboBox5.Value
Cells(djr,18)=Me.userntt.Value
Cells(djr,19)=Me.datett.Value
Cells(djr,3)="=hh"
Cells(djr,7)="=yjn"
Cells(djr,8)="=fyjn"
Cells(djr,5)="=bh(row())"
Rows(djr&":
"&djr).EntireRow.AutoFit
IfRows(djr&":
"&djr).RowHeight<22.5ThenRows(djr&":
"&djr).RowHeight=22.5
Cells(djr,6).Select
Me.TextBox4.Value=""
Me.TextBox19.Value=""
Me.TextBox10.Value=0
Me.TextBox11.Value=0
Me.SpinButton1.Value=0
Me.SpinButton2.Value=0
ActiveWorkbook.Save
上述代码便是将窗口2中的内容存入表格的代码,代码中用到了cells()函数,这个函数是对表格位置的定位,我们知道range()函数也是对表格位置的定位,但是这个函数不方便单元格的动态定位,而cells()便可以,从上述代码中我们发现djr是个变量,通过变量我们可以按一定要求,对其进行动态赋值。
在将数据存入表格后,我们通过ActiveWorkbook.Save函数对刚才的操作进行保存,以防程序出错或电脑死机后导致数据丢失。
窗口2
4.3.信息修改
窗口3是对现有信息的修改,其基本代码如窗口2的登记按钮中的代码,我们修改信息时,有可能将这条信息移到到其它表格中,要完成这个过程,我们得用到下列代码:
IfMsgBox("本记录将移至所选位置,是否确定?
",vbYesNo,"选择:
")=vbYesThen
v=Me.ComboBox8.Value&"H"&Me.ComboBox7.Value
Rows(r&":
"&r).Select
Selection.Cut
Calldwh(v)
rr=Range("a5").Value
Rows(rr&":
"&rr).Select
Selection.InsertShift:
=xlDown
Callxsandyc
EndIf
上述代码除了用到if语句以外,还用到了cut和insert函数,这两个函数其实是我们平时常用的剪切和插入函数,但其中我们用到了自定义函数dwh,并通过call函数进行调用,dwh函数如下:
Functiondwh(v)
n=Range("a2").Value
Fori=34Ton
IfCells(i,2)=vThen
Cells(i+1,1).Select
i=n
Callxsandyc
EndIf
Next
EndFunction
这个函数同样用的是for……next循环语句进行了逐个查找,以找到以v值定位的行。
并将修改后的值移动到指定的位置,将修改人的信息存放于表格内。
窗口3
4.4.收发登记
窗口4中是对文件的收发登记,此窗口可以实时记录文件的流动情况,并修改文件的实际数据,其主要实现代码如下:
IfMe.ComboBox12.Value="出"Then
Cells(nrn,13).Value=Cells(nrn,13)+Me.TextBox16.Value
Cells(nrn,15).Value=Cells(nrn,15)+Me.TextBox17.Value
Else
Cells(nrn,14).Value=Cells(nrn,14)+Me.TextBox16.Value
Cells(nrn,16).Value=Cells(nrn,16)+Me.TextBox17.Value
EndIf
tx=Cells(nrn,23).Value
Cells(nrn,23).Value=tx&tex
MsgBox"登记已成功,请勿重复点击!
",,"重要提示:
"
用if判断“出/入选择”的值来执行数据的增减计算。
为了保证数据的正确性,本段代码用了msgbox函数来提醒用户。
Msgbox是一个对话框函数,这也是vba中常用的一个函数。
我们可以用这个函数在必要时实时提醒用户一些重要的信息。
窗口4
4.5.编辑
窗口5是由打印和编辑两部分组成,由于修改后的表格用正常的打印方法无法正确的打印,所以需用一些特定的代码来实现打印功能,其主要功能的实现我们可以用如下代码:
a3=Range("a3").Value
a4=Range("a4").Value-1
Range("e1").Select
Range(Cells(a3,5),Cells(a4,10)).Select
IfMe.CheckBox2.Value=TrueThen
Selection.PrintOutCopies:
=1,Preview:
=True,Collate:
=True
Else
Selection.PrintOut
EndIf
这段代码用到了PrintOut,这个函数就是vba中的打印函数,如果我们想在打印前进行预览,我们可以用Selection.PrintOutCopies:
=1,Preview:
=True,Collate:
=True来实现,这样我们可以在必要时将要打印的目录进行输出,输出前我们还可以预览确定,以便调整其相关的参数。
窗口5中还有一个“全屏”功能,这个功能可以让Excel窗口放至最大化,并隐蔽各种工具条和文件栏,其代码如下:
WithApplication
.DisplayFullScreen=True
.CommandBars
(1).Enabled=False
EndWith
我们还可以通过如下代码取消全屏显示:
WithApplication
.DisplayFullScreen=False
.CommandBars
(1).Enabled=True
.CommandBars("FullScreen").Reset
EndWith
窗口5
通过上述方法,我们基本上可以实现对资料的动态管理,并能记录下修改人和登记人的信息,窗口中的“电脑名称”,通过Application.UserName函数自动获取。
5.结论
MicrosoftExcel是一个功能强大的表格软件,而VBA函数却是Excel二次开发的利器,我们通过它可以解决很多工程中遇到的实际问题,资料管理系统只是一个较为简单的编程例子。
Excel中还有很多工程中的实用函数,通过它们我们可以编辑出各种各样的软件来解决,要想完好的解决问题,我们就应学会函数的运用,了解它的原理,借助其强大的运算功能。
参考文献:
【1】伯纳德.林姆(编者),葛蕴珊(译者).MicrosoftExcel在科研与工程中的应用.北京:
中国林业出版社(第1版),2003年
【2】ExcelHome.Excel应用大全.北京:
人民邮电出版社,2008
【3】ExcelHome.Excel实战技巧精粹.北京:
人民邮电出版社,2007
【4】杨风和.Excel在建筑工程中的应用.天津:
天津大学出版社,2004
作者简介:
尹帮军,出生于1983年11月,男,籍贯四川省资阳市乐至县,2005年6月毕业于四川农业大学工业与民有建筑专业,2009年12月通过自考取得西南交大建筑工程本科学历。