gpt4 book ai didi

vba - 忽略 "User Defined Type Not Defined"错误

转载 作者:行者123 更新时间:2023-12-04 21:52:40 26 4
gpt4 key购买 nike

我遇到了“未定义用户定义类型”的问题,但是 我不要要解决它,我想忽略它。

情况:在一个word文档(.docm)中,我使用了一个外部dll(C#,由我创建,我可以控制它)。此 dll 用于改进对文档的控制(导入模型部件/搜索取决于参数/...)。 dll 定义特定的用户类型

当用户单击按钮时,将调用自定义 dll。它检查 dll 是否已加载。如果没有,它会显示一条消息,例如“已禁用操作”

调用示例:

' This call is from "ThisDocument"
Private Sub planAction_Click()
' If the dll is not load, display warning message
If Not MqDllInstalled Then
Call MsgBox("Actions disabled", vbInformation, "Action unavailable")
Exit Sub
End If

' This function is in a module
Call FuncPlanAction
End Sub

它调用
Public Sub FuncPlanAction()
...
If exist Then
' WordElementType_PlanAction is a "User-Type Defined"
Call GotoTable(WordElementType_PlanAction, Now)
End If
...
End Sub

以及 GotoTable 的定义
Private Sub GotoTable(ByVal name As WordElementType, ByVal dt As Date)

因此,如果我单击“planAction”按钮,而不是只显示“Actions disabled”消息,它会引发“User Defined Type Not Defined”,因为它试图解析 FuncPlanAction。

我想要的:没有错误引发。

为什么不解决:该文档必须是共享的,如果引用不可用,我只是禁用高级功能。

我所知道的:
  • 问题出在哪里:引用未解决,因此找不到用户定义的类型
  • VBA 编译器是如何工作的:一旦在其中完成调用,它就会尝试加载一个模块(如果这个模块调用另一个模块也会发生同样的情况)。因此,在我使用自定义用户类型调用模块之前,不会出现“用户类型”。

  • 我试过的:
  • 我有一个模块单独的模块“LoadDll”,没有定义用户类型来尝试加载自定义 dll。如果他找不到要加载的 dll/tlb,加载时不会出现错误。
  • On error goto 包围来电者/On error resume next (在 planAction_ClickFuncPlanAction 中)
  • 将函数放入不同的模块

  • 有谁知道如何捕捉这个错误?不提高吗?还有其他建议吗?

    提前致谢

    最佳答案

    尝试替换此行

    Call FuncPlanAction

    有了这个
    Call Application.Run("FuncPlanAction")

    关于vba - 忽略 "User Defined Type Not Defined"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31913846/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com