yosso 发表于 2015-12-9 07:53:29

自动化错误-灾难性错误-VBA Excel在ACAD 2015中创建新块

场景:
I'Excel 2010中的m(32位,Win 7 64位)
尝试使用现有图元(表)创建块,运行AutoCAD 2015
代码来自Fixo-http://forums.augi.com/showthread.php?137159-如何从vba编程创建自己的块Dim blkDef As AcadBlock, _
    blkRef As AcadBlockReference, _
    oSset As AcadSelectionSet, _
    tempBlkName As String, _
    objColl(1) As Object, _
    tempObj As Object
tempBlkName = "_archive-Table" & Format(Now(), "hms")
origTblHndl = acadtbl.Handle
Set objColl(0) = adoc.HandleToObject(origTblHndl)
Set blkDef = adoc.Blocks.Add(tablept, tempBlkName)
AcadApp.ActiveDocument.CopyObjects objColl, blkDef
代码在上面代码摘录的最后一行给出了自动化错误分类错误
有人有什么想法吗&nbsp
谢谢
迈克

57gmc 发表于 2015-12-9 10:37:30

我不知道'看不到acadtbl设置在哪里。

yosso 发表于 2015-12-9 14:02:15


acadtbl作为子程序的参数
Sub PushRelayTable(AcadApp As AcadApplication, acadDoc As AcadDocument, acadtbl As AcadTable, datasheet As Worksheet, blnRelayCategory As Boolean)
调试时,我可以看到该表被添加到对象集合中

57gmc 发表于 2015-12-9 17:50:34

什么'blkdef的状态是什么?我不知道'我也不知道该怎么做。

yosso 发表于 2015-12-10 06:23:01


代码块的第一行是blkDef的dim#039;从底部开始的第二行是设置blkDef的地方
tablept也在模块的前面设置 除最后一行外,任何一行都没有错误
更新(2015年12月10日)
将块创建例程重新定位到上一个例程,现在没有错误,但新创建的块不包含表
谜团加深了

57gmc 发表于 2015-12-10 10:34:02

CopyObjects方法只有两个参数,因此问题必须是其中之一。您可能不会得到错误,但blkDef可能仍然为null。即#039;这就是为什么我问它的地位是什么。在CopyObjects行上设置断点,查看blkdef是否已设置或为null。此外,如果您在sub中的某个位置使用了On error Resume Next,则可能不会出现错误。

yosso 发表于 2015-12-10 11:19:05

你说得太对了,我没有't重置该模块中的错误处理程序 叹气
将错误处理程序添加回该模块(在适当的位置),并以相同的错误结束
根据变量watch,两个参数都有值&nbsp
把我的头发扯到这件上&nbsp
I;甚至还买了一本Lee Ambrosius的Autocad VBA书(Autocad平台自定义),这本书比我的另一本ACAD VBA书更新得多&nbsp
根据他的书,我的代码应该可以工作

Cathy 发表于 2015-12-10 17:23:37


只是一个玩笑&nbsp

yosso 发表于 2015-12-17 07:48:08


只是一个玩笑
感谢您的反馈,但我不认为我'我没有遍历任何集合,是吗&nbsp
M

57gmc 发表于 2015-12-17 10:17:52


只是一个玩笑
感谢您的反馈,但我不认为我'我没有遍历任何集合,是吗&nbsp
M
在调用该方法时没有
如果您上传了电子表格和带有重现问题步骤的样例dwg,也许有人可以对其进行故障排除。有#039;这里没有多少信息。
页: [1] 2
查看完整版本: 自动化错误-灾难性错误-VBA Excel在ACAD 2015中创建新块