自动化错误-灾难性错误-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
代码在上面代码摘录的最后一行给出了自动化错误分类错误
有人有什么想法吗 
谢谢
迈克
我不知道';看不到acadtbl设置在哪里。
acadtbl作为子程序的参数
Sub PushRelayTable(AcadApp As AcadApplication, acadDoc As AcadDocument, acadtbl As AcadTable, datasheet As Worksheet, blnRelayCategory As Boolean)
调试时,我可以看到该表被添加到对象集合中
什么';blkdef的状态是什么?我不知道';我也不知道该怎么做。
代码块的第一行是blkDef的dim#039;从底部开始的第二行是设置blkDef的地方
tablept也在模块的前面设置 ;除最后一行外,任何一行都没有错误
更新(2015年12月10日)
将块创建例程重新定位到上一个例程,现在没有错误,但新创建的块不包含表
谜团加深了 CopyObjects方法只有两个参数,因此问题必须是其中之一。您可能不会得到错误,但blkDef可能仍然为null。即#039;这就是为什么我问它的地位是什么。在CopyObjects行上设置断点,查看blkdef是否已设置或为null。此外,如果您在sub中的某个位置使用了On error Resume Next,则可能不会出现错误。 你说得太对了,我没有';t重置该模块中的错误处理程序 ;叹气
将错误处理程序添加回该模块(在适当的位置),并以相同的错误结束
根据变量watch,两个参数都有值 
把我的头发扯到这件上 
I;甚至还买了一本Lee Ambrosius的Autocad VBA书(Autocad平台自定义),这本书比我的另一本ACAD VBA书更新得多 
根据他的书,我的代码应该可以工作
只是一个玩笑 
只是一个玩笑
感谢您的反馈,但我不认为我';我没有遍历任何集合,是吗 
M
只是一个玩笑
感谢您的反馈,但我不认为我';我没有遍历任何集合,是吗 
M
在调用该方法时没有
如果您上传了电子表格和带有重现问题步骤的样例dwg,也许有人可以对其进行故障排除。有#039;这里没有多少信息。
页:
[1]
2