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 你好
阅读您的帖子,您似乎是在Excel Vba模块内开发上述程序,对吗?
您是否可以尝试执行相反的操作,在Autodesk VBA模块内开发过程,以便使用最新版本的autocad,选择需要将信息传递到excel的对象,等等。
这只是第一印象或建议。我会试着运行你的代码,看看会发生什么。
再见 你好
我用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项目中的参考库
最后,我不明白你想做什么:
再见 谢谢你的回复彼得·潘。
我想分发适用于所有版本的AutoCAD的电子表格,这就是为什么我避免引用特定的AutoCAD库。我不喜欢创建电子表格的多个副本,唯一的更改是来自不同AutoCAD版本的参考。顺便说一句,我正在锁定VBA项目,这就是用户无法更改引用的原因。
原始代码参考了AutoCAD 2018,运行良好。但是,当我尝试使用后期绑定(例如,将Dim acadDoc更改为AcadDocument to Object等)并删除AutoCAD 2018类型库时,它不起作用。
关于acSelectionSetPrevious,它来自非常旧的AutoCAD版本。我相信在获得主动选择时存在一个bug,这就是我为什么要做这项工作的原因。
好的,我理解你的问题,但如果其他软件是可变的,我认为这应该是Autocad,那么至少应该解决一些问题。
作为替代方案,我正在搜索一个技巧,以避免与Autocad库版本绑定,但我不确定。我会及时通知你的。
嗨@Bª™ªN1534592500,
这里是用于检索活动项目引用的代码,因此从活动引用库开始,您可以在启动代码的选择部分之前选择声明的类型
我希望这可能只能解决你的一些问题。
不过,我会调查更多。 非常感谢彼得·潘,我感谢你的努力。
页:
[1]