找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 30234|回复: 132

[VBA程序]:Excel表格到CAD的示例程序

[复制链接]

已领礼包: 181个

财富等级: 日进斗金

发表于 2002-11-26 19:27:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

  1.   [FONT=courier new]
  2.    
  3. Sub Test()
  4.     Dim xlApp As Excel.Application
  5.     Set xlApp = GetObject(, "Excel.Application")
  6.     Dim xlSheet As Worksheet
  7.     Set xlSheet = xlApp.ActiveSheet
  8.     Dim iPt(0 To 2) As Double
  9.     iPt(0) = 0: iPt(1) = 0: iPt(2) = 0
  10.     Dim BlockObj As AcadBlock
  11.     Set BlockObj = ThisDrawing.Blocks("*Model_Space")
  12.     Dim xlRange As Range
  13.     For Each xlRange In xlSheet.UsedRange
  14.         AddLine BlockObj, xlRange
  15.         AddText BlockObj, xlRange
  16.     Next
  17.     Set xlRange = Nothing
  18.     Set xlSheet = Nothing
  19.     Set xlApp = Nothing
  20. End Sub

  21. '边框处理
  22. Sub AddLine(ByRef BlockObj As AcadBlock, ByVal xlRange As Range)
  23.     Dim rl As Double
  24.     Dim rt As Double
  25.     Dim rw As Double
  26.     Dim rh As Double
  27.     rl = xlRange.Left / 2.835
  28.     rt = xlRange.top / 2.835
  29.     rw = xlRange.Width / 2.835
  30.     rh = xlRange.Height / 2.835
  31.     Dim pPt(0 To 3) As Double
  32.     Dim pLineObj As AcadLWPolyline
  33.     If xlRange.Borders(xlEdgeLeft).LineStyle <> xlNone And xlRange.Column = 1 Then
  34.         pPt(0) = rl: pPt(1) = -rt
  35.         pPt(2) = rl: pPt(3) = -(rl + rh)
  36.         Set pLineObj = BlockObj.AddLightWeightPolyline(pPt)
  37.         With xlRange.Borders(xlEdgeLeft)
  38.             If .ColorIndex <> xlAutomatic Then
  39.                 If .ColorIndex = 3 Then
  40.                     pLineObj.Color = acRed
  41.                 ElseIf .ColorIndex = 4 Then
  42.                     pLineObj.Color = acGreen
  43.                 ElseIf .ColorIndex = 5 Then
  44.                     pLineObj.Color = acBlue
  45.                 ElseIf .ColorIndex = 6 Then
  46.                     pLineObj.Color = acYellow
  47.                 ElseIf .ColorIndex = 8 Then
  48.                     pLineObj.Color = acCyan
  49.                 ElseIf .ColorIndex = 9 Then
  50.                     pLineObj.Color = acMagenta
  51.                 End If
  52.             End If
  53.             If .Weight = xlThin Then
  54.                 pLineObj.ConstantWidth = 0
  55.             ElseIf .Weight = xlMedium Then
  56.                 pLineObj.ConstantWidth = 0.35
  57.             ElseIf .Weight = xlThick Then
  58.                 pLineObj.ConstantWidth = 0.7
  59.             End If
  60.         End With
  61.     End If
  62.     If xlRange.Borders(xlEdgeBottom).LineStyle <> xlNone And (xlRange.Row = xlRange.MergeArea.Row + xlRange.MergeArea.Rows.Count - 1) Then
  63.         pPt(0) = rl: pPt(1) = -(rt + rh)
  64.         pPt(2) = rl + rw: pPt(3) = -(rt + rh)
  65.         Set pLineObj = BlockObj.AddLightWeightPolyline(pPt)
  66.         With xlRange.Borders(xlEdgeBottom)
  67.             If .ColorIndex <> xlAutomatic Then
  68.                 If .ColorIndex = 3 Then
  69.                     pLineObj.Color = acRed
  70.                 ElseIf .ColorIndex = 4 Then
  71.                     pLineObj.Color = acGreen
  72.                 ElseIf .ColorIndex = 5 Then
  73.                     pLineObj.Color = acBlue
  74.                 ElseIf .ColorIndex = 6 Then
  75.                     pLineObj.Color = acYellow
  76.                 ElseIf .ColorIndex = 8 Then
  77.                     pLineObj.Color = acCyan
  78.                 ElseIf .ColorIndex = 9 Then
  79.                     pLineObj.Color = acMagenta
  80.                 End If
  81.             End If
  82.             If .Weight = xlThin Then
  83.                 pLineObj.ConstantWidth = 0
  84.             ElseIf .Weight = xlMedium Then
  85.                 pLineObj.ConstantWidth = 0.35
  86.             ElseIf .Weight = xlThick Then
  87.                 pLineObj.ConstantWidth = 0.7
  88.             End If
  89.         End With
  90.     End If
  91.     If xlRange.Borders(xlEdgeRight).LineStyle <> xlNone And (xlRange.Column >= xlRange.MergeArea.Column + xlRange.MergeArea.Columns.Count - 1) Then
  92.         pPt(0) = rl + rw: pPt(1) = -(rt + rh)
  93.         pPt(2) = rl + rw: pPt(3) = -rt
  94.         Set pLineObj = BlockObj.AddLightWeightPolyline(pPt)
  95.         With xlRange.Borders(xlEdgeRight)
  96.             If .ColorIndex <> xlAutomatic Then
  97.                 If .ColorIndex = 3 Then
  98.                     pLineObj.Color = acRed
  99.                 ElseIf .ColorIndex = 4 Then
  100.                     pLineObj.Color = acGreen
  101.                 ElseIf .ColorIndex = 5 Then
  102.                     pLineObj.Color = acBlue
  103.                 ElseIf .ColorIndex = 6 Then
  104.                     pLineObj.Color = acYellow
  105.                 ElseIf .ColorIndex = 8 Then
  106.                     pLineObj.Color = acCyan
  107.                 ElseIf .ColorIndex = 9 Then
  108.                     pLineObj.Color = acMagenta
  109.                 End If
  110.             End If
  111.             If .Weight = xlThin Then
  112.                 pLineObj.ConstantWidth = 0
  113.             ElseIf .Weight = xlMedium Then
  114.                 pLineObj.ConstantWidth = 0.35
  115.             ElseIf .Weight = xlThick Then
  116.                 pLineObj.ConstantWidth = 0.7
  117.             End If
  118.         End With
  119.     End If
  120.     If xlRange.Borders(xlEdgeTop).LineStyle <> xlNone And xlRange.top = 1 Then
  121.         pPt(0) = rl + rw: pPt(1) = -rt
  122.         pPt(2) = rl: pPt(3) = -rt
  123.         Set pLineObj = BlockObj.AddLightWeightPolyline(pPt)
  124.         With xlRange.Borders(xlEdgeTop)
  125.             If .ColorIndex <> xlAutomatic Then
  126.                 If .ColorIndex = 3 Then
  127.                     pLineObj.Color = acRed
  128.                 ElseIf .ColorIndex = 4 Then
  129.                     pLineObj.Color = acGreen
  130.                 ElseIf .ColorIndex = 5 Then
  131.                     pLineObj.Color = acBlue
  132.                 ElseIf .ColorIndex = 6 Then
  133.                     pLineObj.Color = acYellow
  134.                 ElseIf .ColorIndex = 8 Then
  135.                     pLineObj.Color = acCyan
  136.                 ElseIf .ColorIndex = 9 Then
  137.                     pLineObj.Color = acMagenta
  138.                 End If
  139.             End If
  140.             If .Weight = xlThin Then
  141.                 pLineObj.ConstantWidth = 0
  142.             ElseIf .Weight = xlMedium Then
  143.                 pLineObj.ConstantWidth = 0.35
  144.             ElseIf .Weight = xlThick Then
  145.                 pLineObj.ConstantWidth = 0.7
  146.             End If
  147.         End With
  148.     End If
  149.     Set pLineObj = Nothing
  150. End Sub

  151. '文字处理
  152. Sub AddText(ByRef BlockObj As AcadBlock, ByVal xlRange As Range)
  153.     If xlRange.Text = "" Then Exit Sub
  154.     Dim rl As Double
  155.     Dim rt As Double
  156.     Dim rw As Double
  157.     Dim rh As Double
  158.     rl = xlRange.Left / 2.835
  159.     rt = xlRange.top / 2.835
  160.     rw = xlRange.MergeArea.Width / 2.835
  161.     rh = xlRange.MergeArea.Height / 2.835
  162.     Dim iPt(0 To 2) As Double
  163.     iPt(0) = rl: iPt(1) = -rt: iPt(2) = 0
  164.     Dim mTextObj As AcadMText
  165.     Set mTextObj = BlockObj.AddMText(iPt, rw, xlRange.Text)
  166.     Dim tPt As Variant
  167.     If xlRange.VerticalAlignment = xlTop And (xlRange.HorizontalAlignment = xlLeft Or xlRange.HorizontalAlignment = xlGeneral) Then
  168.         mTextObj.AttachmentPoint = acAttachmentPointTopLeft
  169.         mTextObj.InsertionPoint = iPt
  170.     ElseIf xlRange.VerticalAlignment = xlTop And xlRange.HorizontalAlignment = xlCenter Then
  171.         mTextObj.AttachmentPoint = acAttachmentPointTopCenter
  172.         tPt = ThisDrawing.Utility.PolarPoint(iPt, 0, rw / 2)
  173.     ElseIf xlRange.VerticalAlignment = xlTop And xlRange.HorizontalAlignment = xlRight Then
  174.         mTextObj.AttachmentPoint = acAttachmentPointTopRight
  175.         tPt = ThisDrawing.Utility.PolarPoint(iPt, 0, rw)
  176.     ElseIf xlRange.VerticalAlignment = xlCenter And (xlRange.HorizontalAlignment = xlLeft _
  177.             Or xlRange.HorizontalAlignment = xlGeneral) Then
  178.         mTextObj.AttachmentPoint = acAttachmentPointMiddleLeft
  179.         tPt = ThisDrawing.Utility.PolarPoint(iPt, -1.5707963, rh / 2)
  180.     ElseIf xlRange.VerticalAlignment = xlCenter And xlRange.HorizontalAlignment = xlCenter Then
  181.         mTextObj.AttachmentPoint = acAttachmentPointMiddleCenter
  182.         tPt = ThisDrawing.Utility.PolarPoint(iPt, -1.5707963, rh / 2)
  183.         tPt = ThisDrawing.Utility.PolarPoint(tPt, 0, rw / 2)
  184.     ElseIf xlRange.VerticalAlignment = xlCenter And xlRange.HorizontalAlignment = xlRight Then
  185.         mTextObj.AttachmentPoint = acAttachmentPointMiddleRight
  186.         tPt = ThisDrawing.Utility.PolarPoint(iPt, -1.5707963, rh / 2)
  187.         tPt = ThisDrawing.Utility.PolarPoint(tPt, 0, rw / 2)
  188.     ElseIf xlRange.VerticalAlignment = xlBottom And (xlRange.HorizontalAlignment = xlLeft _
  189.             Or xlRange.HorizontalAlignment = xlGeneral) Then
  190.         mTextObj.AttachmentPoint = acAttachmentPointBottomLeft
  191.         tPt = ThisDrawing.Utility.PolarPoint(iPt, -1.5707963, rh)
  192.     ElseIf xlRange.VerticalAlignment = xlBottom And xlRange.HorizontalAlignment = xlCenter Then
  193.         mTextObj.AttachmentPoint = acAttachmentPointBottomCenter
  194.         tPt = ThisDrawing.Utility.PolarPoint(iPt, -1.5707963, rh)
  195.         tPt = ThisDrawing.Utility.PolarPoint(tPt, 0, rw / 2)
  196.     ElseIf xlRange.VerticalAlignment = xlBottom And xlRange.HorizontalAlignment = xlRight Then
  197.         mTextObj.AttachmentPoint = acAttachmentPointBottomRight
  198.         tPt = ThisDrawing.Utility.PolarPoint(iPt, -1.5707963, rh)
  199.         tPt = ThisDrawing.Utility.PolarPoint(tPt, 0, rw)
  200.     End If
  201.     mTextObj.InsertionPoint = tPt
  202.     Set mTextObj = Nothing
  203. End Sub
  204.   [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 181个

财富等级: 日进斗金

 楼主| 发表于 2002-11-26 19:31:55 | 显示全部楼层
附上源代码,过一段时间等整个程序处理完后再上传。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 181个

财富等级: 日进斗金

 楼主| 发表于 2002-11-27 14:22:12 | 显示全部楼层
附上两个从Excel中的磅单位到毫米单位换算的函数(1 毫米 = 2.835 磅)。

  1.   [FONT=courier new]
  2. '磅换算成毫米
  3. Function PointsToMillimeters(ByVal Points As Double) As Double
  4.     PointsToMillimeters = Points * 0.3527778
  5. End Function

  6. ''毫米换算成磅
  7. Function MillimetersToPoints(ByVal Millimeters As Double) As Double
  8.     MillimetersToPoints = Millimeters * 2.8346457
  9. End Function
  10.   [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-12-6 16:57:52 | 显示全部楼层
"If xlRange.Borders(xlEdgeTop).LineStyle <> xlNone And xlRange.top = 1 Then"
其中的应该为xlRange.top=0,或者xlRange.row=1

“    If xlRange.VerticalAlignment = xlTop And (xlRange.HorizontalAlignment = xlLeft Or xlRange.HorizontalAlignment = xlGeneral) Then
        mTextObj.AttachmentPoint = acAttachmentPointTopLeft
        mTextObj.InsertionPoint = iPt“
应该把mTextObj.InsertionPoint = iPt改成tpt=ipt

“    If xlRange.Borders(xlEdgeLeft).LineStyle <> xlNone And xlRange.Column = 1 Then
        pPt(0) = rl: pPt(1) = -rt
        pPt(2) = rl: pPt(3) = -(rl + rh)”
改成ppt(3)=-(rt+rh)

不当之处,请谅解。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 181个

财富等级: 日进斗金

 楼主| 发表于 2002-12-10 19:41:20 | 显示全部楼层
感谢adian2000和eachy提出的建议,希望更多的人能够对程序的进一步完善提供一些建议。
修改后的程序如下:

  1.   [FONT=courier new]
  2. Sub Test()
  3.     On Error Resume Next
  4.     Dim xlApp As Excel.Application
  5.     Set xlApp = GetObject(, "Excel.Application")
  6.     If Err Then
  7.         MsgBox " Excel 应用程序没有运行。请启动 Excel 并重新运行程序。"
  8.         Exit Sub
  9.     End If
  10.     Dim xlSheet As Worksheet
  11.     Set xlSheet = xlApp.ActiveSheet
  12.     'Dim iPt(0 To 2) As Double
  13.     'iPt(0) = 0: iPt(1) = 0: iPt(2) = 0
  14.     Dim BlockObj As AcadBlock
  15.     Set BlockObj = ThisDrawing.Blocks("*Model_Space")
  16.     Dim iPt As Variant
  17.     iPt = ThisDrawing.Utility.GetPoint(, "指定表格的插入点: ")
  18.     If IsEmpty(iPt) Then Exit Sub
  19.     Dim xlRange As Range
  20.     Debug.Print xlSheet.UsedRange.Address
  21.     For Each xlRange In xlSheet.UsedRange
  22.         AddLine BlockObj, iPt, xlRange
  23.         AddText BlockObj, iPt, xlRange
  24.     Next
  25.     Set xlRange = Nothing
  26.     Set xlSheet = Nothing
  27.     Set xlApp = Nothing
  28. End Sub

  29. '边框线条粗细
  30. Function LineWidth(ByVal xlBorder As Border) As Double
  31.     Select Case xlBorder.Weight
  32.         Case xlThin
  33.             LineWidth = 0
  34.         Case xlMedium
  35.             LineWidth = 0.35
  36.         Case xlThick
  37.             LineWidth = 0.7
  38.         Case Else
  39.             LineWidth = 0
  40.     End Select
  41. End Function

  42. '边框线条颜色,处理的颜色不全,请自己添加
  43. Function LineColor(ByVal xlBorder As Border) As Integer
  44.     Select Case xlBorder.ColorIndex
  45.         Case xlAutomatic
  46.             LineColor = acByLayer
  47.         Case 3
  48.             LineColor = acRed
  49.         Case 4
  50.             LineColor = acGreen
  51.         Case 5
  52.             LineColor = acBlue
  53.         Case 6
  54.             LineColor = acYellow
  55.          Case 8
  56.             LineColor = acCyan
  57.          Case 9
  58.             LineColor = acMagenta
  59.         Case Else
  60.             LineColor = acByLayer
  61.     End Select
  62. End Function

  63. '给制边框
  64. Sub AddLine(ByRef BlockObj As AcadBlock, ByVal iPt As Variant, ByVal xlRange As Range)
  65.     If xlRange.Borders(xlEdgeLeft).LineStyle = xlNone _
  66.         And xlRange.Borders(xlEdgeBottom).LineStyle = xlNone _
  67.         And xlRange.Borders(xlEdgeRight).LineStyle = xlNone _
  68.         And xlRange.Borders(xlEdgeTop).LineStyle = xlNone Then Exit Sub
  69.     Dim rl As Double
  70.     Dim rt As Double
  71.     Dim rw As Double
  72.     Dim rh As Double
  73.     rl = PToM(xlRange.Left)
  74.     rt = PToM(xlRange.top)
  75.     rw = PToM(xlRange.Width)
  76.     rh = PToM(xlRange.Height)
  77.     Dim pPt(0 To 3) As Double
  78.     Dim pLineObj As AcadLWPolyline
  79.     If xlRange.Borders(xlEdgeLeft).LineStyle <> xlNone And xlRange.Column = 1 Then
  80.         pPt(0) = iPt(0) + rl: pPt(1) = iPt(1) - rt
  81.         pPt(2) = iPt(0) + rl: pPt(3) = iPt(1) - (rt + rh)
  82.         Set pLineObj = BlockObj.AddLightWeightPolyline(pPt)
  83.         pLineObj.ConstantWidth = LineWidth(xlRange.Borders(xlEdgeLeft))
  84.         pLineObj.Color = LineColor(xlRange.Borders(xlEdgeLeft))
  85.     End If
  86.     If xlRange.Borders(xlEdgeBottom).LineStyle <> xlNone And (xlRange.Row = xlRange.MergeArea.Row + xlRange.MergeArea.Rows.Count - 1) Then
  87.         pPt(0) = iPt(0) + rl: pPt(1) = iPt(1) - (rt + rh)
  88.         pPt(2) = iPt(0) + rl + rw: pPt(3) = iPt(1) - (rt + rh)
  89.         Set pLineObj = BlockObj.AddLightWeightPolyline(pPt)
  90.         pLineObj.ConstantWidth = LineWidth(xlRange.Borders(xlEdgeBottom))
  91.         pLineObj.Color = LineColor(xlRange.Borders(xlEdgeBottom))
  92.     End If
  93.     If xlRange.Borders(xlEdgeRight).LineStyle <> xlNone And (xlRange.Column >= xlRange.MergeArea.Column + xlRange.MergeArea.Columns.Count - 1) Then
  94.         pPt(0) = iPt(0) + rl + rw: pPt(1) = iPt(1) - (rt + rh)
  95.         pPt(2) = iPt(0) + rl + rw: pPt(3) = iPt(1) - rt
  96.         Set pLineObj = BlockObj.AddLightWeightPolyline(pPt)
  97.         pLineObj.ConstantWidth = LineWidth(xlRange.Borders(xlEdgeRight))
  98.         pLineObj.Color = LineColor(xlRange.Borders(xlEdgeRight))
  99.     End If
  100.     If xlRange.Borders(xlEdgeTop).LineStyle <> xlNone And xlRange.Row = 1 Then
  101.         pPt(0) = iPt(0) + rl + rw: pPt(1) = iPt(1) - rt
  102.         pPt(2) = iPt(0) + rl: pPt(3) = iPt(1) - rt
  103.         Set pLineObj = BlockObj.AddLightWeightPolyline(pPt)
  104.         pLineObj.ConstantWidth = LineWidth(xlRange.Borders(xlEdgeTop))
  105.         pLineObj.Color = LineColor(xlRange.Borders(xlEdgeTop))
  106.     End If
  107.     Set pLineObj = Nothing
  108. End Sub

  109. '给制文本
  110. Sub AddText(ByRef BlockObj As AcadBlock, ByVal InsertionPoint As Variant, ByVal xlRange As Range)
  111.     If xlRange.Text = "" Then Exit Sub
  112.     Dim rl As Double
  113.     Dim rt As Double
  114.     Dim rw As Double
  115.     Dim rh As Double
  116.     rl = PToM(xlRange.Left)
  117.     rt = PToM(xlRange.top)
  118.     rw = PToM(xlRange.MergeArea.Width)
  119.     rh = PToM(xlRange.MergeArea.Height)
  120.     Dim i As Integer
  121.     Dim s As String
  122.     For i = 1 To Len(xlRange.Text) '将EXCEL的换行符替换成\P,注如果是在R2002以上可使用Replace函数。
  123.         If Asc(Mid(xlRange.Text, i, 1)) = 10 Then
  124.             s = s & "\P"
  125.         Else
  126.             s = s & Mid(xlRange.Text, i, 1)
  127.         End If
  128.     Next
  129.     Dim iPt(0 To 2) As Double
  130.     iPt(0) = InsertionPoint(0) + rl: iPt(1) = InsertionPoint(1) - rt: iPt(2) = 0
  131.     Dim mTextObj As AcadMText
  132.     Set mTextObj = BlockObj.AddMText(iPt, rw, s)  '"{\f" & xlRange.Font.Name & ";" & s & "}")
  133.     mTextObj.LineSpacingFactor = 0.75
  134.     mTextObj.Height = PToM(xlRange.Font.Size)
  135.     Dim tPt As Variant
  136.     If xlRange.VerticalAlignment = xlTop And (xlRange.HorizontalAlignment = xlLeft Or xlRange.HorizontalAlignment = xlGeneral) Then
  137.         mTextObj.AttachmentPoint = acAttachmentPointTopLeft
  138.         tPt = iPt
  139.     ElseIf xlRange.VerticalAlignment = xlTop And xlRange.HorizontalAlignment = xlCenter Then
  140.         mTextObj.AttachmentPoint = acAttachmentPointTopCenter
  141.         tPt = ThisDrawing.Utility.PolarPoint(iPt, 0, rw / 2)
  142.     ElseIf xlRange.VerticalAlignment = xlTop And xlRange.HorizontalAlignment = xlRight Then
  143.         mTextObj.AttachmentPoint = acAttachmentPointTopRight
  144.         tPt = ThisDrawing.Utility.PolarPoint(iPt, 0, rw)
  145.     ElseIf xlRange.VerticalAlignment = xlCenter And (xlRange.HorizontalAlignment = xlLeft _
  146.             Or xlRange.HorizontalAlignment = xlGeneral) Then
  147.         mTextObj.AttachmentPoint = acAttachmentPointMiddleLeft
  148.         tPt = ThisDrawing.Utility.PolarPoint(iPt, -1.5707963, rh / 2)
  149.     ElseIf xlRange.VerticalAlignment = xlCenter And xlRange.HorizontalAlignment = xlCenter Then
  150.         mTextObj.AttachmentPoint = acAttachmentPointMiddleCenter
  151.         tPt = ThisDrawing.Utility.PolarPoint(iPt, -1.5707963, rh / 2)
  152.         tPt = ThisDrawing.Utility.PolarPoint(tPt, 0, rw / 2)
  153.     ElseIf xlRange.VerticalAlignment = xlCenter And xlRange.HorizontalAlignment = xlRight Then
  154.         mTextObj.AttachmentPoint = acAttachmentPointMiddleRight
  155.         tPt = ThisDrawing.Utility.PolarPoint(iPt, -1.5707963, rh / 2)
  156.         tPt = ThisDrawing.Utility.PolarPoint(tPt, 0, rw / 2)
  157.     ElseIf xlRange.VerticalAlignment = xlBottom And (xlRange.HorizontalAlignment = xlLeft _
  158.             Or xlRange.HorizontalAlignment = xlGeneral) Then
  159.         mTextObj.AttachmentPoint = acAttachmentPointBottomLeft
  160.         tPt = ThisDrawing.Utility.PolarPoint(iPt, -1.5707963, rh)
  161.     ElseIf xlRange.VerticalAlignment = xlBottom And xlRange.HorizontalAlignment = xlCenter Then
  162.         mTextObj.AttachmentPoint = acAttachmentPointBottomCenter
  163.         tPt = ThisDrawing.Utility.PolarPoint(iPt, -1.5707963, rh)
  164.         tPt = ThisDrawing.Utility.PolarPoint(tPt, 0, rw / 2)
  165.     ElseIf xlRange.VerticalAlignment = xlBottom And xlRange.HorizontalAlignment = xlRight Then
  166.         mTextObj.AttachmentPoint = acAttachmentPointBottomRight
  167.         tPt = ThisDrawing.Utility.PolarPoint(iPt, -1.5707963, rh)
  168.         tPt = ThisDrawing.Utility.PolarPoint(tPt, 0, rw)
  169.     End If
  170.     mTextObj.InsertionPoint = tPt
  171.     Set mTextObj = Nothing
  172. End Sub

  173. ' 磅换算成毫米
  174. Function PToM(ByVal Points As Double) As Double
  175.     PToM = Points * 0.3527778
  176. End Function
  177.   [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2002-12-10 20:15:24 | 显示全部楼层
Excel中自动换行的格转进CAD后没有换行。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 181个

财富等级: 日进斗金

 楼主| 发表于 2002-12-10 20:42:08 | 显示全部楼层
可能是EXCEL的版本问题吧,先看看你安装的EXCEL中的换行符是不是ASC码为10的符号,如果不是,把Asc(Mid(xlRange.Text, i, 1)) = 10这句后的10更改掉。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-12-11 09:19:45 | 显示全部楼层
CAD里的图形能和EXCEL关联吗?即EXCEL的内容改变后,CAD里的图形能自动更新吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 181个

财富等级: 日进斗金

 楼主| 发表于 2002-12-11 09:49:39 | 显示全部楼层
这个你可以通过事件来触发,达到动态更新,如文档激活或者执行命令时,这些主要是自己怎么控制了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-12-11 11:22:51 | 显示全部楼层
我想要一个可以向excel中自动填写数据的程序。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 181个

财富等级: 日进斗金

 楼主| 发表于 2002-12-11 12:49:17 | 显示全部楼层
向EXCEL中传输数据,要知道怎么提取CAD的数据,如文本。在EXCEL中怎么处理,如从哪个单元格开始放置。给个具体的说明吧。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-12-12 11:37:37 | 显示全部楼层
斑竹,能做个动画演示吗?谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-1-15 22:41:45 | 显示全部楼层
能再加一些注释吗
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 181个

财富等级: 日进斗金

 楼主| 发表于 2003-1-16 19:15:18 | 显示全部楼层
大家可以先看看帮助文件,有什么不明白的地方再提出来。
有兴趣的朋友可以接着往下探索,让Excel和AutoCAD最大限度的发挥各自的长处,有益于自己的工作和学习。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-2-2 18:16:25 | 显示全部楼层
我有一套龙震的关于excel和cad通信程序
下次放上来
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-23 16:13 , Processed in 0.391348 second(s), 60 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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