乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 178|回复: 6

SetBlockTableRecordId问题

[复制链接]

12

主题

175

帖子

77

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
149
发表于 2019-11-23 09:25:51 | 显示全部楼层 |阅读模式
我提交了一个我已经发布的帖子https://forums.autodesk.com/t5/visual-basic-customization/setblocktablerecordid-issue/td-p/9157637到目前为止,没有任何解决方案。
我在Excel for Office 365 32位VBA应用程序版本7.1中编写代码,并在W10笔记本电脑中使用。
  1. myTable.SetBlockTableRecordId j + 1, 0, myDoc.Blocks("blockName").ObjectID, True

然而,如果我在AutoCAD 2018 VBA 7.1环境中编写代码,我会得到一个编译错误,将“编译器错误:不对应类型”作为(hoepfully)最接近的翻译
相同的语句不会出错
我知道(或者至少我认为)这与32/64位有关,并盲目地尝试了这两种方法
  1. myTable.SetBlockTableRecordId j + 1, 0, myDoc.Blocks("blockName").ObjectID32 , True

  1. myTable.SetBlockTableRecordId j + 1, 0, CLngPtr(myDoc.Blocks("blockName").ObjectID)

,但无济于事
可能会感兴趣的是:
-没有“CLngPtr”,编译错误将突出显示语句的“.ObjectID”部分
-使用“CLngPtr”,编译错误将高亮显示“.CLngPtr”部分
我认为我的Excel 32位永远不会处理对需要一些64位参数的方法(SetBlockTableRecordId)的调用
有人知道解决方案吗
谢谢

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

12

主题

175

帖子

77

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
149
发表于 2019-11-23 10:21:57 | 显示全部楼层
您是否尝试过将SetBlockTableRecordId32方法与Object32属性结合使用?
回复

使用道具 举报

18

主题

1529

帖子

973

银币

中流砥柱

Rank: 25

铜币
649
发表于 2019-11-28 12:57:00 | 显示全部楼层
Hy Roy
如果您的意思是我必须处理一个
LongPtr
值,那么我已经尝试了
CLngPtr()
转换,但是没有成功。
或者你指的是别的什么?
谢谢
回复

使用道具 举报

12

主题

175

帖子

77

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
149
发表于 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(…,[BlockId],…)
无论[BlockId]是否用ClngPtr包装,只要我编译代码(菜单=>调试->编译…),VBA IDE就会冻结,我必须杀死AutoCAD
如果我注释掉那行代码,编译/运行就可以了。
您可以在这里看到区别:您至少可以在Office 365中使用Excel进行编译,即使它不通过;就我而言,当存在特定代码行时,编译本身会使AutoCAD VBA崩溃
因此,如果我是你,我可能会放弃运行Excel VBA代码来自动化AutoCAD的想法。
回复

使用道具 举报

4

主题

219

帖子

4

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
238
发表于 2019-12-1 09:24:33 | 显示全部楼层
感谢Norman的时间和见解
这是我的一个打印错误:在“CLngPtr”之前没有点(“
”当然这是可能的,但AutocCAD部分是许多沉重的Excel部分中非常小的一个。所以我宁愿采取变通办法,甚至放弃插入表格单元格块。或者等待64位Excel...
回复

使用道具 举报

18

主题

1529

帖子

973

银币

中流砥柱

Rank: 25

铜币
649
发表于 2019-12-5 10:23:25 | 显示全部楼层
你不能“手动”做到这一点吗?
回复

使用道具 举报

12

主题

175

帖子

77

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
149
发表于 2019-12-6 02:49:37 | 显示全部楼层
你不能“手动”完成吗

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

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-4-16 15:08 , Processed in 0.691820 second(s), 77 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表