明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1482|回复: 3

[求助]请问我的程序错在哪里

[复制链接]
发表于 2010-2-17 20:56:00 | 显示全部楼层 |阅读模式

Public Sub 导出文字()

    Dim Excel As Excel.Application

    Dim ExcelSheet As Object

    Dim ExcelWorkbook As Object

    
    Dim LJ As String
    Dim NA As String
   
    Dim RowNum As Integer

    Dim Header As Boolean

    Dim elem As AcadEntity

    Dim Arr()  As String

    Dim i As Integer
   
    '定义选择集和选择集元素
    Dim ssText As AcadSelectionSet
    Dim objSelected As AcadEntity
   
 '安全地创建选择集
    On Error Resume Next
    If Not IsNull(ThisDrawing.SelectionSets) Then
        Set ssText = ThisDrawing.SelectionSets
        ssText.Delete     '及时删除不用的选择集非常重要
    End If
    Set ssText = ThisDrawing.SelectionSets.Add("Text")


    ' 获取本cad的路径和名字
    LJ = ThisDrawing.Path
    NA = ThisDrawing.Name
   
    ' 启动 Excel。
    Set Excel = New Excel.Application

   

    ' 创建新的工作簿并查找活动电子表格。

    Set ExcelWorkbook = Excel.Workbooks.Add

    Set ExcelSheet = Excel.ActiveSheet
   
    ExcelWorkbook.SaveAs LJ & "\" & Left(NA, Len(NA) - 4) & ".xls"
   
   
     

     '提示用户在屏幕上选择文字
     'MsgBox "请选择您想要导出的表格,然后按回车键", vbInformation, "提示"
    ThisDrawing.Utility.Prompt vbCr & "请选择您想要导出的表格,然后按回车键"
    
    
     '选择选择集,限定选择条件
     ssText.SelectOnScreen
    
    ' If ssText.Count = 0 Then Exit Sub
   
   
   
    '把块炸开
    For Each objSelected In ssText
                    
                     If LCase(objSelected.ObjectName) = "acdbblockreference" Then
                                 objSelected.Explode
                     End If
    Next
  
   
   
   ' 循环选择的文字框内容
   i = 0
     For Each objSelected In ssText
    
       If LCase(objSelected.ObjectName) = "acadtext" Or LCase(objSelected.ObjectName) = "acadMtext" Then
       Arr(i) = objSelected.TextString
       i = i + 1
       End If
      
     Next
    
    
   ExcelWorkbook.Worksheets("sheet1").Active
    
     For i = 0 To UBound(Arr)
      ExcelWorkbook.Worksheets("sheet1").Cells(i + 1, 1) = Arr(i)
     Next
    
         
  
  
  
    ThisDrawing.SelectionSets.Item("Text").Delete
   
    Excel.Application.Quit
    ThisDrawing.Application.Update
End Sub

这是我写的一个导出cad文字到excel第一列的代码  我是参照着几个写的

为什么保存的excel里没有数据哦。。。呜呜呜呜   大家帮帮忙

 楼主| 发表于 2010-2-17 22:41:00 | 显示全部楼层

大家帮帮忙啊

谢谢各位大侠了~~~~~~

发表于 2010-2-20 21:02:00 | 显示全部楼层
用调试模式看看哪里出错了,我都是写在正在运行的Excel文件中,还没有直接保存过
发表于 2010-2-23 16:18:00 | 显示全部楼层

选中的如果是块就炸开,,是指内容为文字的块?但是你炸开他也不在你现在的选择集中啊。。

再有,判断完是文字类型后,也没有看你有把ARR数组的维数重新定义什么啊,直接是赋不上的呀,所以再怎么导出是空的

另外以上解决完后,我想你导出的文字应该也是乱序的

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

本版积分规则

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

GMT+8, 2024-11-26 00:40 , Processed in 0.179357 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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