我有“用户定义的类型未定义”的问题,但我不想解决它,我想忽略它.
情况:在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”按钮,而不是仅显示消息“已禁用操作”,则会引发“用户定义的类型未定义”,因为它尝试解析FuncPlanAction.
我想要的是:没有错误提升.
为什么不解决:文档必须是共享的,如果引用不可用,我只是禁用高级功能.
我知道的:
>问题的来源:引用未解决,因此找不到用户定义的类型
> VBA编译器的工作原理:它在调用完成后尝试加载模块(如果此模块调用另一个模块,则会发生同样的情况).因此,在我使用用户类型的用户调用模块之前,不会引发“用户类型”.
我尝试过的:
>我有一个单独的模块“LoadDll”没有定义用户类型来尝试加载自定义DLL.如果他找不到要加载的dll / tlb,则加载时不会出错.
>使用On错误goto / On错误继续下一步(在planAction_Click和FuncPlanAction中)环绕调用者
>将功能放在不同的模块中
有谁知道如何捕获此错误?不提高吗?还有其他建议吗?
谢谢你提前
最佳答案 尝试更换此行
Call FuncPlanAction
有了这个
Call Application.Run("FuncPlanAction")