【问题标题】:Missing referencies in VBA: how to "include" modules?VBA 中缺少引用:如何“包含”模块?
【发布时间】:2014-10-17 17:48:17
【问题描述】:

我有一个旧代码 - Autocad 的一些宏 - 我让它在启用 VBA 的 Autocad 2015 上运行。有一些与字符串相关的函数,如TrimMid 等。 而且这些函数缺少引用,VBA 找不到它们的定义。我可以在对象浏览器中手动找到它们,所以我使用Strings.Trim,它可以工作。如何避免在 VBA 中每次调用函数时添加模块名称?有没有类似include String'的东西?

已编辑:我收到一个编译错误“找不到项目或库”,下面是此消息后引用窗口的屏幕截图:

并且默认选择 Microsoft Word Library。我仔细检查过,它的路径是正确的。 没有带有 MISSING 前缀的库(或者只是看不到它)。也许,其中一些必须排除,因为它是遗留代码,但我不确定在这种情况下疯狂猜测是否会很好,也许有办法标记问题库?

【问题讨论】:

  • 目前对代码的引用是什么?查看是否有任何损坏或丢失的参考。如果是这样修复它们:access-diva.com/d5.html
  • @PaulFrancis 感谢您的关注,我更新了帖子。
  • 有人告诉我,Autocad 的位版本不是 32。这是正确的吗?您的错误可能不是因为引用,而是因为编译器错误卡在某处。您是否尝试过对 VBA 代码进行编译?
  • @PaulFrancis 是的,它是 64 位版本。毕竟我编译了项目 - 我删除了对 DAO 3.6 的引用并添加了对最新 Access 库的引用。编译很好,但现在出现了一些奇怪的运行时错误。
  • 是的,您还没有真正解决问题。查看代码中的库声明是什么。确保它们是PtrSafe

标签: vba autocad


【解决方案1】:

可能您的某个参考(较新版本的 AutoCAD,或者更可能是 Microsoft Word)现在具有与 Left、Mid、Trim 等匹配的函数或方法名称,而以前不存在这些名称。这将使这些函数名称不明确。 尝试选择性地删除引用以查看对这些函数的影响,或者在键入 Mid 时观察 intelliSense 以查看它是否具有不同的含义。

考虑为这些字符串函数编写包装器。例如,编写一个内部调用字符串的 Left 函数。在使用这些函数的地方可见的模块中。

虽然这不能立即解决您的问题,但它可以让您最大限度地减少对遗留代码的更改。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-11
    • 2013-10-28
    • 2023-03-20
    • 2022-01-18
    相关资源
    最近更新 更多