乐筑天下

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

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到目前为止,没有任何解决方案;m从Excel for Office 365 32位VBA应用程序7.1版中进行编码,并在W10笔记本电脑中使用;m引用AutoCAD 2018类型库并尝试使用SetBlockTableRecordId;使用以下代码线将块插入表格单元格的方法:
  1. myTable.SetBlockTableRecordId j + 1, 0, myDoc.Blocks("blockName").ObjectID, True

然而,我'我得到一个编译错误,用“quot;编译器错误:不对应类型;作为(hoepfully)最接近的翻译,同一个语句不'如果我在AutoCAD 2018 VBA 7.1环境中编码,我会出错,我知道(或者至少我认为)这与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“;,编译错误将突出显示“QUOTE;”;。ObjectID“;声明的一部分-带有;CLngPtr“ 编译错误将突出显示“QUOTE;”;。CLngPtr“;第I和039部分;我认为我的Excel 32位永远不会处理对需要一些64位参数的方法(SetBlockTableRecordId)的调用
有人知道解决方案吗

谢谢你
回复

使用道具 举报

12

主题

175

帖子

77

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

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

使用道具 举报

18

主题

1529

帖子

973

银币

中流砥柱

Rank: 25

铜币
649
发表于 2019-11-28 12:57:00 | 显示全部楼层
谢谢李抽出时间;SetBlockTableRecordId32“;方法:039;t由intellisense列出,无论如何,我尝试了它,作为确认,我得到了运行时错误#039;438' 对象不支持的属性或方法
回复

使用道具 举报

12

主题

175

帖子

77

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
149
发表于 2019-11-30 13:04:13 | 显示全部楼层
也许检查GetBlockTableRecordId返回的内容会有所帮助?
回复

使用道具 举报

4

主题

219

帖子

4

银币

后起之秀

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

铜币
238
发表于 2019-12-1 09:24:33 | 显示全部楼层
如果你的意思是我必须处理一个长ptr值,那么我已经尝试了CLngPtr(),但没有成功
或者你是说别的什么
谢谢你
回复

使用道具 举报

18

主题

1529

帖子

973

银币

中流砥柱

Rank: 25

铜币
649
发表于 2019-12-5 10:23:25 | 显示全部楼层
只是一点额外的信息,这可能没有多大帮助:你说;报价(&gt)
-带有;CLngPtr“ 编译错误将突出显示“QUOTE;”;。CLngPtr“;部分/报价&gt
我有点困惑:CLngPtr()是一个全局函数,而不是一个对象的函数。那么,为什么是“the”",这显然会导致编译错误。如果是&引用;只是在你的帖子中输入错误,那么你是这样说的代码:
myTable。SetBlockTableRecordId j+1,0,CLngPtr(myDoc.Blocks(“blockName”)。ObjectID)
仍然通过高亮显示ClngPtr()给出编译错误
这是我从MS Office 2016 suite(也是VBA7.1 32位)获得的单机Excel 2016。我写了几行代码来设置一个AcadTable,其中一行调用myTable。SetBlockTableRecordId(…,[BlockId],…)
无论[BlockId]是否用ClngPtr包装,只要我编译代码(菜单=>调试->编译…),VBA IDE就会冻结,我必须杀死AutoCAD
如果我注释掉这行代码,编译/运行就可以了。你可以看到这里的区别:你至少可以在Office 365中用Excel进行编译,即使它没有通过;在我看来,当特定代码行存在时,编译本身会使AutoCAD VBA崩溃
所以,我'如果我是你的话,我可能会因此放弃运行Excel VBA代码来自动化AutoCAD的想法
回复

使用道具 举报

12

主题

175

帖子

77

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
149
发表于 2019-12-6 02:49:37 | 显示全部楼层
很抱歉延迟回复。您是否尝试在SetBlockTableRecordId中使用GetBlockTableRecordId的返回值?
回复

使用道具 举报

12

主题

175

帖子

77

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
149
发表于 2019-12-9 10:10:43 | 显示全部楼层
@roy_043;返回单元格的块表记录ID
所以我必须首先在想要的单元格中放置一个blockreference,以便使用它,但这正是我的目标,所以我想我'在任何情况下,我也尝试先在单元格中手动放置块引用,然后使用GetBlockTableRecordI和GetBlockTableRecordI2方法来检索该单元格中的块Id,但在这两种情况下,Excel都会自动崩溃…
回复

使用道具 举报

18

主题

1529

帖子

973

银币

中流砥柱

Rank: 25

铜币
649
发表于 2019-12-9 10:27:28 | 显示全部楼层
感谢诺曼的时间和见解,这是我的打字错误:“之前没有点”;CLngPtr("
当然有可能,但AutoCAD部分是一个非常小的部分,介于许多和沉重的Excel部分之间。因此,我宁愿采取变通方法,甚至放弃表单元块插入。或者等待64位Excel…
回复

使用道具 举报

12

主题

175

帖子

77

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
149
发表于 2019-12-11 12:49:49 | 显示全部楼层
Can#039;你不能这样做吗;手动#039;?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-12 22:05 , Processed in 0.488053 second(s), 83 queries .

© 2020-2025 乐筑天下

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