Bª™ªN1534592500 发表于 2022-7-6 21:40:35

Excel-E的后期绑定VBA

您好,请您帮助我转换此代码(后期绑定),以便它可以在不引用特定acx的情况下适用于大多数版本的AutoCAD。tlb?
 

Sub ExportLine()
    Dim acadApp As Object
    Dim acadDoc As Object
    Dim currentSelectionSet As Object
    Dim ent As Object
    Dim oLine As Object
    Dim n As Long
    Dim intGroupCode(0) As Integer
    Dim varDataCode(0) As Variant




    Set acadApp = GetObject(, "AutoCAD.Application")
    Set acadDoc = acadApp.ActiveDocument



intGroupCode(0) = 0
varDataCode(0) = "Line"

acadDoc.SelectionSets.Item("Lne").Delete


Set currentSelectionSet = acadDoc.SelectionSets.Add("Lne")



   
   n = 1

    For Each ent In currentSelectionSet

      
      

      If TypeOf ent Is AcadLine Then 'This line is a problem

      

            Set oLine = ent


            Cells(n, 1) = oLine.StartPoint(0)
            Cells(n, 2) = oLine.StartPoint(1)
            Cells(n, 3) = oLine.StartPoint(2)
            Cells(n, 4) = oLine.EndPoint(0)
            Cells(n, 5) = oLine.EndPoint(1)
            Cells(n, 6) = oLine.EndPoint(2)


            
      End If
         
    Next



    Set acadApp = Nothing
    Set acadDoc = Nothing

      MsgBox "Done"

Exit Sub

PeterPan9720 发表于 2022-7-6 21:54:05

你好
阅读您的帖子,您似乎是在Excel Vba模块内开发上述程序,对吗? 
您是否可以尝试执行相反的操作,在Autodesk VBA模块内开发过程,以便使用最新版本的autocad,选择需要将信息传递到excel的对象,等等。
这只是第一印象或建议。我会试着运行你的代码,看看会发生什么。
 
再见

PeterPan9720 发表于 2022-7-6 22:06:22

你好
我用Autocad Mechanical 2019和Excel 2016在Excel VBA开发区内试用了您的代码,还插入了一个带有optionbutton的用户表单,并对其进行了以下修改,看起来它正在运行。
我还试着改变线条颜色,在excel上处理精细的单元格颜色背景。
我对变量声明做了一些修改。
我第一次在检索行的起点和终点坐标时遇到一些问题,后来我做了一个修改变量声明,它运行得很好。
我建议检查“ent”变量中的对象是否真的是一条线(可能是一条多段线)。

Sheets(1).Activate
Dim acadApp As Object
    Dim acadDoc As AcadDocument
    Dim currentSelectionSet As Object
    Dim ent As Object
    Dim oLine As AcadLine查看图片下方的信息,以及Execl项目中的参考库

 
最后,我不明白你想做什么:
再见

Bª™ªN1534592500 发表于 2022-7-6 22:11:12

谢谢你的回复彼得·潘。
我想分发适用于所有版本的AutoCAD的电子表格,这就是为什么我避免引用特定的AutoCAD库。我不喜欢创建电子表格的多个副本,唯一的更改是来自不同AutoCAD版本的参考。顺便说一句,我正在锁定VBA项目,这就是用户无法更改引用的原因。
 
原始代码参考了AutoCAD 2018,运行良好。但是,当我尝试使用后期绑定(例如,将Dim acadDoc更改为AcadDocument to Object等)并删除AutoCAD 2018类型库时,它不起作用。
 
关于acSelectionSetPrevious,它来自非常旧的AutoCAD版本。我相信在获得主动选择时存在一个bug,这就是我为什么要做这项工作的原因。

PeterPan9720 发表于 2022-7-6 22:26:28

 
好的,我理解你的问题,但如果其他软件是可变的,我认为这应该是Autocad,那么至少应该解决一些问题。
作为替代方案,我正在搜索一个技巧,以避免与Autocad库版本绑定,但我不确定。我会及时通知你的。

PeterPan9720 发表于 2022-7-6 22:37:00

 
嗨@Bª™ªN1534592500,
这里是用于检索活动项目引用的代码,因此从活动引用库开始,您可以在启动代码的选择部分之前选择声明的类型
我希望这可能只能解决你的一些问题。
不过,我会调查更多。

Bª™ªN1534592500 发表于 2022-7-6 22:41:56

非常感谢彼得·潘,我感谢你的努力。
页: [1]
查看完整版本: Excel-E的后期绑定VBA