相关疑难解决方法(0)

如何从C#代码中捕获Microsoft Access VBA调试错误?

我有一个C#程序,它打开几个Microsoft Access文件,并从每个文件中执行功能.

本质上,代码看起来像这样:

Microsoft.Office.Interop.Access.Application app =
    new Microsoft.Office.Interop.Access.Application();

app.Visible = true;
app.OpenCurrentDatabase(accessFileFullPath, false, "");

//Call the function
app.Eval(function);
Run Code Online (Sandbox Code Playgroud)

但是,当VBA代码中发生调试错误时,我想将其捕获到我的C#程序中.

不要回答:"在您的VBA程序中捕获错误".由于我不会涉及的原因,这是不可能的.

我过去使用的一种方法是让一个线程间歇性地监视任何Visual Basic Debug窗口的句柄(FindWindowEx Win32函数返回非零值).我不喜欢这种方法,也不想继续使用它.

我找到了这个适用于Microsoft Excel的线程.从本质上讲,它使用的Microsoft.VisualBasic.CallByName()功能显然可以被困在try/catch块中,而无需用户交互.但是,我无法使用Microsoft Access - 主要是因为我无法弄清楚如何使用此命令调用函数/ sub.

任何建议都将真诚地感谢!

编辑:正如我在下面的一个答案中提到的,我尝试Eval()在try/catch块中包装,我的C#程序似乎忽略它,直到用户点击"Microsoft Visual Basic"错误对话框上的"结束"按钮.我不希望任何用户交互,而是想要捕获VBA错误以便在我的C#程序中处理.

c# ms-access vba office-interop

7
推荐指数
1
解决办法
2232
查看次数

标签 统计

c# ×1

ms-access ×1

office-interop ×1

vba ×1