RICVBA 发表于 2019-11-23 09:25:51

SetBlockTableRecordId问题

我提交了一个我已经发布的帖子https://forums.autodesk.com/t5/visual-basic-customization/setblocktablerecordid-issue/td-p/9157637到目前为止,没有任何解决方案。
我在Excel for Office 365 32位VBA应用程序版本7.1中编写代码,并在W10笔记本电脑中使用。
myTable.SetBlockTableRecordId j + 1, 0, myDoc.Blocks("blockName").ObjectID, True
然而,如果我在AutoCAD 2018 VBA 7.1环境中编写代码,我会得到一个编译错误,将“编译器错误:不对应类型”作为(hoepfully)最接近的翻译
相同的语句不会出错
我知道(或者至少我认为)这与32/64位有关,并盲目地尝试了这两种方法
myTable.SetBlockTableRecordId j + 1, 0, myDoc.Blocks("blockName").ObjectID32 , True
myTable.SetBlockTableRecordId j + 1, 0, CLngPtr(myDoc.Blocks("blockName").ObjectID)
,但无济于事
可能会感兴趣的是:
-没有“CLngPtr”,编译错误将突出显示语句的“.ObjectID”部分
-使用“CLngPtr”,编译错误将高亮显示“.CLngPtr”部分
我认为我的Excel 32位永远不会处理对需要一些64位参数的方法(SetBlockTableRecordId)的调用
有人知道解决方案吗
谢谢
**** Hidden Message *****

RICVBA 发表于 2019-11-23 10:21:57

您是否尝试过将SetBlockTableRecordId32方法与Object32属性结合使用?

Roy_043 发表于 2019-11-28 12:57:00

Hy Roy
如果您的意思是我必须处理一个
LongPtr
值,那么我已经尝试了
CLngPtr()
转换,但是没有成功。
或者你指的是别的什么?
谢谢

RICVBA 发表于 2019-11-30 13:04:13

只是一点额外的信息,这可能没有多大帮助:
你说
-有了“CLngPtr”,编译错误会突出显示“.CLngPtr”部分
我有点困惑:CLNGPTL()是一个全局函数,而不是一个对象的函数。那么,为什么会出现“.”,这显然会导致编译错误。如果“.”只是在您的帖子中键入错误,那么您是在说这样的代码:
myTable。SetBlockTableRecordId j+1,0,CLngPtr(myDoc.Blocks(“blockName”)。ObjectID)
仍然通过突出显示ClngPtr()给出编译错误
以下是我从MS Office 2016套件(也是VBA7.1 32位)中获得的独立Excel 2016。
我编写了几行代码,用一行调用
myTable来设置一个AcadTable。SetBlockTableRecordId(…,,…)
无论是否用ClngPtr包装,只要我编译代码(菜单=>调试->编译…),VBA IDE就会冻结,我必须杀死AutoCAD
如果我注释掉那行代码,编译/运行就可以了。
您可以在这里看到区别:您至少可以在Office 365中使用Excel进行编译,即使它不通过;就我而言,当存在特定代码行时,编译本身会使AutoCAD VBA崩溃
因此,如果我是你,我可能会放弃运行Excel VBA代码来自动化AutoCAD的想法。

n.yuan 发表于 2019-12-1 09:24:33

感谢Norman的时间和见解
这是我的一个打印错误:在“CLngPtr”之前没有点(“
”当然这是可能的,但AutocCAD部分是许多沉重的Excel部分中非常小的一个。所以我宁愿采取变通办法,甚至放弃插入表格单元格块。或者等待64位Excel...

Roy_043 发表于 2019-12-5 10:23:25

你不能“手动”做到这一点吗?

RICVBA 发表于 2019-12-6 02:49:37

你不能“手动”完成吗

是的,我可以。我做到了,根据我同一篇文章的最后几行,我在此回忆:
“在任何情况下,我也尝试先手动将blockreference放入单元格,然后使用GetBlockTableRecordI和GetBlockTableRecordI2方法检索该单元格中的块Id,但在这两种情况下,Excel都会无声地崩溃”
页: [1]
查看完整版本: SetBlockTableRecordId问题