使用Word2000 VBA开发工程文档文件

2018-10-18 18:56

Call text(13, I1 + 200, I2 + 50, 85, 50, \波形图\'相量绘制

a1 = 10 * Cos(60 * PI / 180) b1 = 10 * Sin(60 * PI / 180)

Call text(8, a1 * 28 / 5 + 136, 140 - b1 * 28 / 5 - 10, 60, 20, Str(10), \°\Call jl(136, 140, a1 * 28 / 5 + 136, 140 - b1 * 28 / 5) a2 = 5 * Cos(-90 * PI / 180) b2 = 5 * Sin(-90 * PI / 180)

Call text(8, a2 * 28 / 5 + 136 + 5, 140 - b2 * 28 / 5 - 10, 60, 20, Str(5), \°\Call jl(136, 140, a2 * 28 / 5 + 136, 140 - b2 * 28 / 5) a3 = a1 + a2 b3 = b1 + b2

I3m = Sqr(a3 * a3 + b3 * b3) If I3m = 0 Then ang = 0 Else

If a3 <> 0 Then ang = Atn(b3 / a3)

If a3 < 0 Then ang = ang + 180 ang = Round(ang * 180 / PI, 1) Else

If b1 < 0 Then ang = -90 Else ang = 90 End If End If End If

Call text(8, a3 * 28 / 5 + 136, 140 - b3 * 28 / 5 - 10, 60, 20, Str(Round(I3m, 1)), \°\Call jl(136, 140, a3 * 28 / 5 + 136, 140 - b3 * 28 / 5)

Call dl(a2 * 28 / 5 + 136, 140 - b2 * 28 / 5, a3 * 28 / 5 + 136, 140 - b3 * 28 / 5) Call dl(a1 * 28 / 5 + 136, 140 - b1 * 28 / 5, a3 * 28 / 5 + 136, 140 - b3 * 28 / 5) '波形图绘制

For i = 0 To 540 Step 10 a5 = I1 + 152 + i / 180 * 48

b5 = I2 - 48 * Cos(i * PI / 180 + 60 * PI / 180) b7 = I2 - 24 * Cos(i * PI / 180 - 90 * PI / 180)

b9 = I2 - 48 * Cos(i * PI / 180 + 60 * PI / 180) - 24 * Cos(i * PI / 180 - 90 * PI / 180) If i <> 0 Then

Call sl(a4, b4, a5, b5) Call sl(a4, b6, a5, b7) Call sl(a4, b8, a5, b9) End If a4 = a5 b4 = b5 b6 = b7

6

b8 = b9 Next i End Sub '子函数

Sub text(ByVal s As Single, ByVal a As Single, ByVal b As Single, ByVal c As Single, ByVal d As Single, ByVal e As String, ByVal e1 As String, ByVal f As Integer)

ActiveDocument.Shapes.AddTextbox(msoTextOrientationHorizontal, a, b, c, d).Select Selection.Font.Size = s Selection.TypeText text:=e

If f = 0 Then Selection.ParagraphFormat.Alignment = wdAlignParagraphRight If f = 1 Then Selection.ParagraphFormat.Alignment = wdAlignParagraphLeft If f = 2 Then Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter If e1 <> \

Selection.Font.Underline = wdUnderlineSingle Selection.TypeText text:=e1 End If

Selection.ShapeRange.Line.Visible = msoFalse End Sub

Sub sl(ByVal a As Single, ByVal b As Single, ByVal c As Single, ByVal d As Single) ActiveDocument.Shapes.AddLine(a, b, c, d).Select End Sub

Sub dl(ByVal a As Single, ByVal b As Single, ByVal c As Single, ByVal d As Single) ActiveDocument.Shapes.AddLine(a, b, c, d).Select Selection.ShapeRange.Line.DashStyle = msoLineDash End Sub

Sub jl(ByVal a As Single, ByVal d As Single, ByVal c As Single, ByVal b As Single) ActiveDocument.Shapes.AddLine(a, b, c, d).Select Selection.ShapeRange.Flip msoFlipVertical

Selection.ShapeRange.Line.EndArrowheadStyle = msoArrowheadOpen End Sub

7

使用Word2000 VBA开发工程文档文件

崔永刚

煤炭部合肥院合能公司

在工程软件的开发中,有相当数量软件其计算结果往往是坐标系、一些图形及文字等。这类软件要求在输入数据后能立即产生计算结果,并可立即输出计算结果;而且可多次输入数据并可多次输出计算结果。

一、早期“工程文档”文件开发

在早期,该类工程软件往往采用BASIC 语言编程,在计算机屏幕上产生坐标系、一些图形及文字等计算结果,再进行屏幕打印从连接在计算机上的打印机获得打印结果。在当时,笔者所使用计算机屏幕最大分辨率为1024X768,而且汉字与数字等字符其大小固定、显示位置也固定,所以其计算结果往往并非令人满意,例如,如要绘制坐标系,其X轴与Y轴大小与位置均受汉字与数字等字符显示位置限制,效果并不理想,但由于其在输入原始数据后能立即产生计算结果,并利用计算机屏幕打印功能打印计算结果;还可多次输入原始数据、并多次产生与打印计算结果,所以尽管效果不十分理想,但由于其能即时产生计算结果,所以很多工程技术人员在许多工程软件的开发中,并不采用诸如利用编程语言产生AutoCAD的DXF文件格式,再在AutoCAD中获得非常理想图形文字结果做法,或者直接使用AutoCAD中LISP语言编程等做法,其主要原因就是由于该方法的输入数据与打印结果的方便性,特别是要产生多个打印结果更为方便的优点。

二、用VBA开发工程文档文件

在现在,由于Word2000中VBA是集成在Word中的开发语言,其编程结果可直接产生Word文档,既具有以前使用打印屏幕产生计算结果的方便性,同时还可在一个文档中产生多个计算结果,一次输出的优点。再加上VBA语言其本质即为Visual BASIC语言一个子集,与早期的BASIC语言可谓是一脉相承,所以其编程方法与以前BASIC语言方法类似。正因为如此,使用VBA开发上述软件是一种非常高效、方便的开发方法。

1

在本文,将以图1中所示电路的一个结点为例,来说明该类软件的开发方法。现在在已知i1(t)与i2(t)的情况下,得出i3(t)的相量图与波形图。

其中,i1(t)=102cos(ωt+60°) A

i2(t)=52sinωt A

i3(t)=i1(t)+i2(t) A

ω=2*π*f=2*π*50=100π

I1=10/60°

I2=5/-90°

1

+j 5 0 -5 5 10/60° 10√2 5√2 i(A) ωt(rad) 6.2/ 36.2° 10 +1 0 -5√2 -10√2 3π 5/-90° (a)相量图 (b)波形图 图2 三、工程文档文件开发技术与方法介绍

图2为根据上述条件通过本文程序绘制出的图形,该程序流程图见图3。从图3我们可以看出本文程序共有四个主要模块组成,第一个模块即为for i=-2 to 2循环,用于坐标系文字绘制,第二个模块即为for i=1 to 6循环,用于坐标系刻度线与坐标轴绘制,其后为第三个模块,用于相量值与相量绘制,第四个模块为for i=0 to 540循环,用于波形图绘制。在下文将对图2与图3进行说明,在本文所使用的单位为磅。

在本文程序中I1=120与I2=140是相量图X轴的起点坐标。在相量图中X与Y轴,其每5个刻度值为28,波形图X轴每π/2刻度为24,Y轴每52刻度为24。文字的实现由于要放在任意位置,故使用插入文本框的方式来写文字。当坐标系的文字绘制完成后,则开始绘制轴刻度线及X与Y轴,刻度线则采用实线绘制,坐标轴采用箭头直线绘制,完成后则进入程序的第三模块,即相量的计算与绘制,在图2中I3相量及相量值绘制是根据I1及I2的相量数值通过计算自动生成,相量采用箭头线绘制,它们之间的连线则采用虚线绘制。相量I3的振幅I3m的通过计算获得后,相量角的获得则分三种情况,如果I3m=0,则I3相量的初相角ang=0°,如果I3m<>0,若I3在X轴投影不为零,则可通过反正切函数获得,由于获得角度范围为-π/2至π/2,故当相量在X轴上投影为负时,则需加上180°,如果I3在X轴投影为零,则当I3在Y轴上投影为负,则ang=-90°,反之ang=90°。波形图的绘制则较为方便,其波形曲线则是通过绘制一段段线段连接而成,其中i3(t)则是根据i1(t)及i2(t)通过计算而绘制。

在本文中共有四个子函数,文本框绘制子函数,绘实线、绘虚线及箭头线子函数,所有子函数的开始均通过录制新宏而获得,由于文本框的边框不能显示,故要将文本框边框的线条颜色设置为无线条颜色,另外又因为文本框子函数有三种对齐方式,即左、中、右三种对齐方式,故需在此子函数中需加入判断语句来选择对齐方式,同时,在相量的绘制中,例如绘制第一个相量I1=10/60°,由于后面“/60°带有下划线,故在该子函数中加入下划线绘制功能,同时将字符串分成两部分,即字符串“10”与“/60°”,这样便可绘制I1相量数值。因此,若要进行VBA编程,对宏命令的定义与运用需要掌握,否则将无法进行编程。

在本文文中2的实现是通过插入对象中的公式实现的,如果没有公式一项则需要重新装入此项。另外坐标系中2的实现是通过在√2的上面绘直线实现的,因为2在文本框中无法一次绘制。

在本文中笔者使用的单位为磅,在Word中大家可能注意VBA中其绘线、文字等大小单位均为磅,大家可能对磅比较陌生,实际上磅的英文即为POINT,汉语中的意思即为点。在早期,针式打印机每英吋为72行,一行高度即为1点(磅),所以1英吋=72磅,而由于1英吋=25.4mm,故1磅=25.4/72=0.3528mm。 四、在该类软件的开发中,有以下四点值得注意:

a)

在由宏产生的VBA语句中,对于文本框,需要删除一些不必要的语句,否则其位置不能固定,

同时对于其它由宏产生它的VBA语句,也要删除一些不必要的语句,这样同时可以加快计算机

2

3

处理速度。

b) 先写文字,然后绘图形,可避免文本框与图形之间冲突。

c) 需要注意绘线子程序中坐标的顺序问题,对于实线与虚线,其坐标输入顺序与我们平时绘线的顺

序一致,为x0,y0,x1,y1顺序,而箭头线顺序则为x0,y1,x1,y0,与我们平时绘线顺序不一致。 d) 关于保密问题,如果有专门的机器供自己使用,则可方便地将宏保存在Normal.dot中。如果没有

专门的机器供自己使用,则必须采取一些保密措施,来防止源程序被别人获得。

五、结束语

在本文,本人只是说明了VBA开发工程软件的主要过程,而在编程的一些细节,如是否使用窗体,数据的输入等问题则没有说明,这些问题可根据具体情况进行处理,在本文不再阐述。

在当今计算机技术高速发展的年代,新的开发工具可谓日新月异,而VBA则称得上其中优秀的一员。实际上VBA的应用非常广泛,开发工程软件只是其应用范围一个方面,所以运用VBA进行软件开发的前景可谓非常广阔。

如果读者需要本文源程序,可通过与《计算机与信息技术》杂志社联系,或通过电子邮件与笔者本人直接联系。

以下不排!

电子邮件地址:cyghn@mail.hf.ah.cn 电 话:0551-5530979 BP机: 1272147379

以下为本文《使用Word2000 VBA开发工程文档文件》源程序:

'主程序 Sub main()

4

Const PI = 3.1415926 Dim zubiao As String Dim i As Integer

Dim ang, I1, I2, I3m, a1, a2, a3, a4, a5, b1, b2, b3, b4, b5, b6, b7, b8, b9 As Single '坐标系绘制 I1 = 120 I2 = 140

For i = -2 To 2 If i = 0 Then

Call text(10.5, I1 - 7, I2 - 2, 25, 20, \Call text(10.5, I1 + 129, I2 - 2, 25, 20, \Else

zubiao = Str(-1 * i * 5)

Call text(10.5, I1 + 104, I2 + i * 24 - 10, 49, 20, zubiao + \√2\Call sl(I1 + 146, I2 + i * 24 - 3.5, I1 + 138, I2 + i * 24 - 3.5)

If i >= -1 And i < 2 Then Call text(10.5, I1 - 8, I2 + i * 28 - 10, 25, 20, zubiao, \If i = 2 Then

Call text(10.5, I1 - 7, I2 - i * 28 - 12, 25, 20, \

Call text(10.5, I1 + 152, I2 - i * 28 - 14, 38, 20, \Call text(10.5, I1 + 80, I2 - 2, 30, 20, \

Call text(10.5, I1 + 294, I2 - 20, 80, 20, \ωt(rad)\Call text(10.5, I1 + 280, I2 - 2, 35, 20, \π\End If End If

If i > 0 Then

zubiao = Str(i * 5)

Call text(10.5, I1 + i * 28 - 3, I2 - 2, 32, 20, zubiao, \End If Next i

For i = 1 To 6 If i <= 1 Then

Call sl(I1 + 16, I2 + i * 28, I1 + 20, I2 + i * 28) Call sl(I1 + 16, I2 - i * 28, I1 + 20, I2 - i * 28) End If

Call sl(I1 + i * 24 + 152, I2, I1 + i * 24 + 152, I2 - 4) If i <= 2 Then

Call sl(I1 + i * 28 + 16, I2, I1 + i * 28 + 16, I2 - 4) Call sl(I1 + 152, I2 - i * 24, I1 + 156, I2 - i * 24) Call sl(I1 + 152, I2 + i * 24, I1 + 156, I2 + i * 24) End If Next i

Call jl(I1, I2, I1 + 92, I2)

Call jl(I1 + 16, I2 + 48, I1 + 16, I2 - 60) Call jl(I1 + 152, I2 + 60, I1 + 152, I2 - 60) Call jl(I1 + 136, I2, I1 + 320, I2)

Call text(13, I1 + 10, I2 + 50, 85, 50, \相量图\

5


使用Word2000 VBA开发工程文档文件.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:常用岩心描述英语词汇及简写

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: