利用VBA 实现工程文档数据自动传输
2020-11-05田路路吕君毅屈坤玉
田路路 吕君毅 屈坤玉 陈 勇
(1、中国建筑第八工程局有限公司,上海200120 2、杭州萧山国际机场有限公司,浙江 杭州310000)
1 概述
项目工程文档通常是word、Excel 和PowerPoint 格式的文件,在这些文档中通常会有很多数据处理和查看工作。word 的主要功能在于文字处理;Excel 的功能在于数据计算,可以对大量数据进行分类、排序甚至绘制图表等;PowerPoint 的主要功能在于在召开会议、远程会议或在网上给观众展示演示文稿。这些软件之间的数据传递通常都是人为完成的,然而遇到数据很大的时候,需要的工作量就很大,工作效率也很低。这就需要软件来自动完成数据传递工作,这样工作效率很高而且不会出错。
例如在施工现场许多临时结构的计算中,方案中都需要附有计算书,大部分计算书都是由word 编写,word 中不能实现自动计算功能,计算完全靠编写计算书人员完成,每次修改数据,计算书中的很多数据都需要进行修改,因此会造成修改计算书中的数据工作量很大,也可能造成错误。可以通过在Excel 来实现数据计算,然后把数据传递给word,使Word 自动更新计算书。
再比如工程例会汇报ppt 中的施工进度数据都是工作人员查看Excel 表格数据进行输入的,这种ppt 和Excel 中的数据格式比较固定,不会经常变化的情况下,完全可以通过PowerPoint 来读取Excel 表格中的数据,实现数据传递。这样提高了工作效率,节省时间。
2 VBA概述
VBA(Visual Basic for Applications)是Visual Basic 的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。主要能用来扩展Windows 的应用程序功能,特别是Microsoft Office 软件。它也可说是一种应用程式视觉化的Basic 脚本。
VBA不但继承了VB的开发机制,而且VBA还具有与VB相似的语言结构,它们的集成开发环境IDE 也几乎相同。但是,经过优化,VBA专门用于Office 的各应用程序。VBA的项目(Project)由使用VBA的Excel、Word、PowerPoint 等称为宿主(Host)的Office应用程序(Application)来调用。
在Excel、Word 和Powerpoint 中使用VBA 可以发挥以下作用:
(1)规范用户的操作,控制用户的操作行为;
(2)多个步骤的手工操作通过执行VBA 代码可以迅速的实现;
(3)利用VBA可以Excel 内轻松开发出功能强大的自动化程序。
(4)充分利用各个软件的优势,实现Excel、Word 和Powerpoint中数据联动。
3 数据联动应用过程案例
3.1 Word 和Exel 数据联动
通过一个混凝土梁的模板验算程序来实现word 和Excel 数据联动,实现word 中计算书数据根据Excel 计算的数据更新。
下面是word 中的计算书,如果混凝土梁的尺寸进行更改,计算书如果手动计算工作量就会很大。所以可以用Excel 表格来计算这些数据,然后在word 里读取Excel 表格中的数据。
3.1.1 基本参数
(1)面板类型:覆面木胶合板
(2)面板厚度t(mm):15
(3)面板抗弯强度设计值[f](N/mm2):15
(4)面板抗剪强度设计值[T](N/mm2):1.4
(5)面板弹性模量E(N/mm2):10000
取单位宽度b=1000mm,按二等跨连续梁计算:
W=bh2/6=1000x15x15/6=37500mm3
I=bh3/12=1000xl5xl5xl5/12=281250mm4
q1=[l2(G1k+(G2k+G3k)xh)+1.4xQ1k]xb=[l.2x(0.l+(24+1.5)x0.8)+l.4x3]xl=28.8kN/m
q1=1.2x[G1k+(G2k+G3k)xh]xb=l.2x[0.1+(24+1.5)x0.8]xl=24.6kN/m
q1活=1.4xQ1kxb=l.4x3xl=4.2kN/m
q2=[lx(G1k+(G2k+G3k)xh)+lxQ1k]xb=[lx(0.1+(24+1.5)x0.8)+lx3]xl=23.5kN/m
3.1.2 强度验算
Mmax=0.125q1L2=0.125x28.8x0.12=0.036kN·m
σ=Mmax/W=0.036x106/37500=0.96N/mm2<[f]=15N/mm2满足要求!
3.1.3 挠度验算
Vmax=0.521q2L4/(100EI)=0.521x23.5xl004/(100xl0000x281250)
=0.004mm<[v]=min[L/150,10]=min[100/150,10]=0.667mm
满足要求!
利用Excel 表格对混凝土梁模板进行受力验算。验算满足后,用Word 读取Excel 生成的数据。(图1)
图1 Excel计算文件
要实现word 中的数据根据Excel 表格中的数据进行更新,首先需要word 找到Excel 文件。所以在word 文件中创建一个窗体,窗体上让用户输入Excel 表格文件的文件路径和文件名。(图2)
图2 用户输入和数据更新窗体
在word 中每个变化的数据可以使用标签控件Label 进行显示和存储。例如表格中面板厚度、面板抗弯强度设计值等参数都放置标签Label 进行显示。每个Label 需要命名,且名字是唯一的不能重复。Label 显示的数值可以通过读取Excel 表格对应的数据进行传递。Word 文件中需要添加控件Label 标签如下:
σ=Mmax/W= Label10 N/mm2<[f] = Label2 N/mm2满足要求!
(3)挠度验算
Vmax = 0.521q2L4/(100EI)= Label11 mm <[v]= min[L/150, 10]=min[100/150, 10] = 0.667mm
满足要求!
编写代码和创建窗体要打开Visual Basic 编辑环境。
点击窗体命令按钮“更新”,程序运行以后word 文档会出现下面的效果
(1)基本参数
①面板类型:覆面木胶合板
②面板厚度t(mm): 15
⑫Katherine O’Donovan,“‘Real’Mothers for Abandoned Children”,Law & Society Review,347(36),2002,pp.361~363.
③面板抗弯强度设计值[f](N/mm2):15
④面板抗剪强度设计值[T](N/mm2):1.4
⑤面板弹性模量E(N/mm2):10000
W=bh2/6=37500 mm3
I=bh3/12=281250 mm4
q1活=1.4xQ1kxb= 4.2 kN/m
q2=[lx(G1k+(G2k+G3k)xh)+lxQ1k]xb=23.5 kN/m
(2)强度验算
Mmax = 0.125q1L2= 0.036 kN·m
σ=Mmax/W= Label10 N/mm2<[f] = 0.96 N/mm2
满足要求!
(3)挠度验算
Vmax = 0.521q2L4/(100EI)= 0.004 mm <[v]= min[L/150, 10]=min[100/150, 10] = 0.667mm
满足要求!
通过以上步骤,实现了word 文档从Excel 中读取数据,然后在word 中显示这些数据。
3.2 PowerPoint 和Excel 数据联动
在会议汇报中,经常使用PPT来汇报施工进度情况。施工进度包含很多表格,表格中有很多数据,这些数据都是由工程日报表来统计的,也就是规定的Excel 表格。项目上编写汇报PPT人员的每次都是查看很多单位的工程日报表来填写PPT中的表格,这样工作需要花费很多时间,而且容易出错。对于汇报PPT和工程日报表都是规定的格式,不会经常变化的文件,完全可以通过PowerPoint和Excel 数据联动,实现PowerPoint 从Excel 中读取数据,利用电脑来完成这件重复性的工作,提高工作效率,节省时间。
下面举例说明一下。
下面是汇报PPT 中的表格,表中的数据可以通过读取Excel表格中的数据来实现更新。
要实现汇报PPT 中可以读取数据,首先要在PPT 的表格中创建控件Label。每个Label 来显示原来的数据,数据通过读取Excel文件中对应的数据来获得。这样实现以后每次就不需要工作人员来填写了,让电脑自动完成。
4 结论
利用VBA实现办公自动化,每个软件之间实现数据传输,在工作中我们会遇到常用的文字排版、表格处理和汇报工作的情况,单纯依靠Office 提供的普通功能,工作效率有时候很低,会花费很多时间。掌握Office 提供的VBA,针对具体问题具体分析,为我们提供工作效率,实现办公自动化和数据联动提供了一种有效的途径。