【最新word论文】Excel VBA在工程测量上的应用【工程建筑专业论文】

上传人:飞*** 文档编号:8720573 上传时间:2017-09-29 格式:DOC 页数:6 大小:39KB
返回 下载 相关 举报
【最新word论文】Excel VBA在工程测量上的应用【工程建筑专业论文】_第1页
第1页 / 共6页
【最新word论文】Excel VBA在工程测量上的应用【工程建筑专业论文】_第2页
第2页 / 共6页
【最新word论文】Excel VBA在工程测量上的应用【工程建筑专业论文】_第3页
第3页 / 共6页
【最新word论文】Excel VBA在工程测量上的应用【工程建筑专业论文】_第4页
第4页 / 共6页
【最新word论文】Excel VBA在工程测量上的应用【工程建筑专业论文】_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《【最新word论文】Excel VBA在工程测量上的应用【工程建筑专业论文】》由会员分享,可在线阅读,更多相关《【最新word论文】Excel VBA在工程测量上的应用【工程建筑专业论文】(6页珍藏版)》请在金锄头文库上搜索。

1、1Excel VBA 在工程测量上的应用摘要:Excel 是大家很熟悉的办公软件,相信大家在工作中经常使用吧。在测量工作中,你是否感觉到有很不方便的时候?比如,计算一个角度的三角函数值,而角度的单位是 60 进制的,此时,你一定感到很无奈,因为,Excel 本身无法直接计算 60 进制的角度的三角函数!还有,如果你的工作表中有了点坐标值(二维或者三维) ,要在 CAD 中展绘出来,怎样才能又快又直接?不然,就只有拐弯摸角了,很痛苦啊!其实,只要对 Excel 进行一些挖掘,就可以发现Excel 的功能我们还没有好好的利用呢。Excel 本身提供了强大的二次开发功能,只要我们仔细的研究,没有什么

2、能难倒我们的。下面,好好笔者将带你走近Excel,认识它的强大的二次开发环境 VBAIDE,用它来解决上面所提到的问题,就非常容易了。 关键词:Excel VBA 工程测量 Excel 是大家很熟悉的办公软件,相信大家在工作中经常使用吧。在测量工作中,你是否感觉到有很不方便的时候?比如,计算一个角度的三角函数值,而角度的单位是 60 进制的,此时,你一定感到很无奈,因为,Excel 本身无法直接计算 60 进制的角度的三角函数!还有,如果你的工作表中有了点坐标值(二维或者三维) ,要在 CAD 中展绘出来,怎样才能又快又直接?不然,就只有拐弯摸角了,很痛苦啊!其实,只要对 Excel 进行一些

3、挖掘,就可以发现 Excel 的功能我们还没有好好的利用呢。Excel 本身提供了强大的二次开发功能,只要我们仔细的研究,没有什么能难倒我们的。下面,好好笔者将带你走近 Excel,认识它的强大的二次开发环境 VBAIDE,用它来解决上面所提到的问题,就非常容易了。初识 VBAIDE,首先,你必须懂得一些简单的 VB 编程常识。如果不懂就只有通过其他的途径去学习了。但用不着深入的研究,只要静下心来,几个小时就可以了。打开 Excel,按 Alt+F11 即进入 VBAIDE,学过 VB 的人一看就知道那就是熟悉的 VB 界面。下面看看如何定义一个函数,然后利用它来解决 60 进制的角度的三角函

4、数计算问题。在菜单上依次点击插入­­­­-模块,然后输入如下代码Public Const pi = 3.14159265359Public Function DEG(n As Double)Dim A As Double, B As Double, C As Double, D As Double, E As Double, F As Double, G As Double, KA As DoubleD = Abs(n) + 0.000000000000001F = Sgn(n)A = Int(D)B = Int(D - A) * 100)C = D - A -

5、 B / 1002DEG = F * (A + B / 60 + C / 0.36) * pi / 180End Function这样,就定义了一个名字叫 DEG 的函数,它的作用就是转换 60 进制的角度为 Excel 认识的弧度。编辑完后按 Alt+Q 即返回 Excel,再在某一单元格输入=sin(deg(A1)(A1 既可以是单元格的值,也可以是输入的角度值),回车,哈哈,怎么样?结果出来了吧?你可以用计算器检验一下是否正确。如果出现#NAME?那就要设置一下安全设置。依次点工具-宏-安全性,在安全级选项卡上选择“中”或者“低” ,然后关闭后重新打开就可以了,以后只要是 60 进制的角

6、度,就用它转换,非常方便哦。工程测量中,经常碰到导线的计算,如果手头没有平差计算程序就只有手工计算了,这时候你曾经想过编个小程序来计算?其实,这很简单,笔者在宛坪(上海至武威)高速公路上做测量监理,因为有大量的导线需要复核,故编写了一个附合导线计算程序,代码很简单,但很实用。下面是该程序的代码:Sub 附合导线计算()Dim m As Integer, n As Integer, ms As Double, gg As Double, sht As Object, xx As Double, yy As Double, S As DoubleSet sht = ThisWorkbook.Act

7、iveSheetDo While sht.Cells(m + 3, 4) m = m + 1LoopFor n = 3 To m + 2ms = DEG(ms) + DEG(sht.Cells(n, 4)ms = RAD(ms)S = S + sht.Cells(n, 3)Nextms = DEG(ms)gg = RAD(DEG(sht.Cells(3, 5) + ms - DEG(sht.Cells(3 + m, 5) - pi * m)xx = 0: yy = 0For n = 4 To m + 2方位角sht.Cells(n, 5) = RAD(DEG(sht.Cells(n - 1,

8、5) + DEG(sht.Cells(n - 1, 4) - pi - DEG(gg) / m)坐标增量sht.Cells(n, 6) = Format(sht.Cells(n - 1, 3) * Cos(DEG(sht.Cells(n, 5), #.#)sht.Cells(n, 7) = Format(sht.Cells(n - 1, 3) * Sin(DEG(sht.Cells(n, 5), #.#)坐标增量和xx = xx + sht.Cells(n, 6)yy = yy + sht.Cells(n, 7)Nextxx = xx + sht.Cells(3, 10) - sht.Cell

9、s(m + 2, 10)yy = yy + sht.Cells(3, 11) - sht.Cells(m + 2, 11)3sht.Cells(m + 4, 5) = = & Format(gg, #.#)sht.Cells(m + 4, 6) = X= & Format(xx, #.#)sht.Cells(m + 4, 7) = Y= & Format(yy, #.#)sht.Cells(m + 4, 3) = S= & Format(S, #.#)sht.Cells(m + 4, 9) = S= & Format(Sqr(xx * xx + yy * yy), #.#)sht.Cells(

10、m + 4, 10) = 相对精度 1/ & Format(S / Sqr(xx * xx + yy * yy), #)For n = 4 To m + 2sht.Cells(n, 8) = Format(xx / S * sht.Cells(n - 1, 3), #.#)sht.Cells(n, 9) = Format(yy / S * sht.Cells(n - 1, 3), #.#)NextFor n = 4 To m + 1sht.Cells(n, 10) = sht.Cells(n - 1, 10) + sht.Cells(n, 6) - sht.Cells(n, 8)sht.Cel

11、ls(n, 11) = sht.Cells(n - 1, 11) + sht.Cells(n, 7) - sht.Cells(n, 9)NextColumns(F:K).SelectSelection.NumberFormatLocal = 0.000_ End SubPublic Function RAD(Nu As Double) As DoubleDim A As Double, B As Double, C As Double, D As Double, E As Double, F As Double, G As Double, p As DoubleD = Abs(Nu)F = S

12、gn(Nu)p = 180# / piG = p * 60#A = Int(D * p)B = Int(D - A / p) * G)W = BC = (D - A / p - B / G) * 20.62648062RAD = (C + A + B / 100) * FEnd Function值得注意的是,前面提到的 DEG 函数别忘记加进去。如果自己定义一个名字叫“计算”的按钮,指定此工具的宏为“单一附合导线计算” ,那么,只要按下面的格式输入原始数据(斜体是输入的) ,点“计算”就可以得到计算结果了。所有的过程都是自动的,无须再手工填写,是不是很方便?下面我们就来解决上面提到的与 CAD

13、 的连接和通讯问题。进入 VBAIDE,按工具-引用,找到可使用的引用,在“AutoCAD2000类型库”的左边打钩,点确定就行了。在模块中输入以下代码:Global Sheet As Object, acadmtext As acadmtext, fontHight As 4DoubleGlobal xlBook As Excel.WorkbookGlobal p0(2) As Double, p1(2) As Double, p2(2) As DoubleGlobal acadApp As AcadApplicationGlobal acadDoc As AcadDocumentGloba

14、l acadPoint As acadPointGlobal number As IntegerPublic Type ptn As Integerpt(2) As DoubleGlobal pt() As ptGlobal text1 As AcadTextGlobal CAD As ObjectGlobal p(2) As Double, i As Integer, j As IntegerGlobal h As Integer, l As IntegerPublic Function Get_ACAD(Dwt As String) As BooleanDim YER As Integer

15、On Error Resume NextSet acadApp = GetObject(, AutoCAD.Application)If Err ThenErr.ClearSet acadApp = CreateObject(AutoCAD.Application)If Err ThenMsgBox Err.DescriptionOn Error GoTo 0Get_ACAD = FalseExit FunctionEnd IfEnd IfOn Error GoTo 0Set acadDoc = acadApp.ActiveDocumentacadApp.Visible = TrueGet_A

16、CAD = TrueDim typeFace As StringDim Bold As BooleanDim Italic As BooleanDim charSet As LongDim PitchandFamily As LongacadDoc.ActiveTextStyle.GetFont typeFace, Bold, Italic, charSet, PitchandFamilyacadDoc.ActiveTextStyle.SetFont 宋体, Bold, Italic, charSet, PitchandFamilyEnd Function5Sub 显示对话框()Form1.Show (0)End SubPublic Function Draw_Point(P

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 大学论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号