明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1599|回复: 6

将量取的长度进行累加的求助

[复制链接]
发表于 2012-11-18 19:53 | 显示全部楼层 |阅读模式
  1. Public Xlapp As Object
  2. Private Sub Command4_Click() '测量长度
  3.     Set Xlapp = GetObject(, "Excel.Application")
  4.     Dim PT1 As Variant
  5.     Dim Dis As Double
  6.     On Error Resume Next
  7. label:
  8.         PT1 = ThisDrawing.Utility.GetPoint(, "1st Point")
  9.         Dis = Format(ThisDrawing.Utility.GetDistance(PT1, "2nd Point") / 1000, "##0.00")
  10.         Xlapp.ActiveCell = Dis
  11.         Xlapp.ActiveCell.Offset(1, 0).Select
  12.         If Err Then
  13.             Exit Sub
  14.         Else
  15.             GoTo label
  16.         End If
  17. End Sub
急用,在线等



 楼主| 发表于 2012-11-18 20:12 | 显示全部楼层
请大家不吝赐教,先谢谢
发表于 2012-11-22 18:21 | 显示全部楼层
  1.     Dim xlapp As Excel.Application
  2.         On Error Resume Next
  3.         Set xlapp = getObject(, "Excel.Application")
  4.         If Err Then
  5.             MsgBox "Please Run the Excel first !! "
  6.             Err.Clear
  7.             Exit Sub
  8.         End If
  9.    
  10.     Dim PT1 As Variant
  11.     Dim Dis As Double

  12. label:
  13.         PT1 = ThisDrawing.Utility.getPoint(, "1st Point")
  14.         Dis = Format(ThisDrawing.Utility.GetDistance(PT1, "2nd Point") / 1000, "##0.00")
  15.         xlapp.ActiveCell = Dis
  16.         xlapp.ActiveCell.Offset(1, 0).Select
  17.         If Err Then
  18.             Me.Show
  19.             Exit Sub
  20.         Else
  21.             GoTo label
  22.         End If
发表于 2012-11-22 19:54 | 显示全部楼层
  1. Public Xlapp As Object
  2. Private Sub Command1_Click() '测量长度

  3. '连接外部程序最好添加错误处理机制:
  4. On Error Resume Next
  5. Set Xlapp = GetObject(, "Excel.Application")
  6. If Err Then
  7.     Err.Clear '如果不clear,则err仍然存在
  8.     MsgBox "请先打开EXCEL!", vbInformation, "提示"
  9.     '或者新建EXCEL程序
  10.     '新建的仍然是application对象
  11.     Set Xlapp = CreateObject("excel.application")
  12.     '或者:
  13.     If MsgBox("EXCEL还没有打开,是否新建EXCEL?", vbInformation, "提示") = vbYes Then
  14.         Set Xlapp = CreateObject("excel.application")
  15.         '显示新建的EXCEL程序,否则操作完除了后续用命令保存,将不能手动修改及显示
  16.         Xlapp.Visible = True
  17.         
  18.     Else
  19.         Exit Sub
  20.     End If
  21. End If 'application对象一整套处理完成

  22. '此处只是application
  23. 'application对象往后才是workbook,接着才是worksheet
  24. 'activecells,也就是cells对象必须是在worksheet对象后面的
  25. '所以下面是建立worksheet对象
  26. '当然因为你要用窗体,下面的dim换成public
  27. Dim Xlbook As Object '存储workbook对象
  28. Dim Xlsheet As Object '存储worksheet对象
  29. Set Xlbook = Xlapp.workbooks.Add
  30. 'set xlbook=xlapp.workbooks(i)  '此处i自定义,用于打开多工作簿的情况'可添加列表框提供手选功能
  31. Set Xlsheet = Xlbook.worksheet(1) '同样可以用add功能
  32. '具体excel就不多说了。模型对象再学习吧
  33. '如此,把下面xlapp全部改成xlsheet就行了


  34. Dim PT1 As Variant
  35. Dim Dis As Double
  36. On Error Resume Next
  37. label:
  38. '注意,任何用到窗体的,并且需要进行图形操作的,譬如get**操作
  39. '在之前都要先隐藏掉窗体'不需要图形操作仅仅纯计算及文字处理的<可>不隐藏
  40. Me.Hide '后面操作完再显示,这个hide一般放在最前面
  41.     PT1 = ThisDrawing.Utility.GetPoint(, "1st Point")
  42.     Dis = Format(ThisDrawing.Utility.GetDistance(PT1, "2nd Point") / 1000, "##0.00")
  43.     Xlapp.ActiveCell = Dis
  44.     Xlapp.ActiveCell.Offset(1, 0).Select
  45.     If Err Then
  46.         Exit Sub
  47.     Else
  48.         GoTo label
  49.     End If
  50. '最后退出时要清空外部链接
  51. '注意不是放在这里,现在放这里只是为了方便说明
  52. '要放在你不再用到EXCEL程序的后面执行
  53. Set Xlapp = Nothing
  54. Set Xlbook = Nothing
  55. Set Xlsheet = Nothing
  56. '最后
  57. Me.Show
  58. '若要支持窗体显示的同时仍然可以操作图形
  59. Me.Show 0 '称为非模态,上面为模态
  60. End Sub
发表于 2012-11-22 20:05 | 显示全部楼层
建议修改下标题,突出EXCEL连接、操作等关键字
发表于 2012-11-23 02:43 来自手机 | 显示全部楼层
把长度导入excel自动求和
发表于 2016-6-3 16:52 | 显示全部楼层
你这样需要确定2点,可以只要选择多段线,就可以显示长度,或者更多的比如,选择文字,就可以把文字输入到excel呢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-20 16:11 , Processed in 0.445901 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表