从 VB.NET 调用访问宏问题

Posted

技术标签:

【中文标题】从 VB.NET 调用访问宏问题【英文标题】:Calling Access Macro from VB.NET problems 【发布时间】:2011-03-20 01:25:17 【问题描述】:

我像这样从 vb.net 调用 Access 宏:

Acc.DoCmd.RunMacro("Macro1")

Access 中的宏有许多 OpenQuery 和 Msgbox,最后有一条消息说“数据完成”。

当我从 vb.net 执行宏时,它会显示数据完成消息,然后完成。但是,当我分析表格以查看是否附加了数据时,它没有。

当我在 Access 中运行相同的宏时,它运行良好。它确实显示了许多消息,例如“您将要运行将修改查询中的数据的附加查询”,我点击是并且确实需要更长的时间,但它确实做到了。 在 VB.NET 中,我得到的唯一消息是最终的消息框。

我也试过了:

Acc.SetOption("Confirm Action Queries", 0)
Acc.SetOption("Confirm Document Deletions", 0)
Acc.SetOption("Confirm Record Changes", 0)

在从 VB.NET 中执行宏之前,但无济于事。还是一样。

有办法解决吗?

编辑:我的 Access DB 是 mdb 文件

【问题讨论】:

这看起来是一种糟糕的做事方式。为什么不直接运行 SQL 命令,而不是使用自动化 Access? 【参考方案1】:

我认为问题在于宏中的 UI 消息: 它确实显示了许多消息,例如“您将要运行将修改查询中的数据的附加查询”,我点击是

Access 中有一个选项可以禁止这些确认查询,您需要在 .mdb 文件中禁止它们。看起来试图从 VB 中抑制它们是行不通的。

【讨论】:

以上是关于从 VB.NET 调用访问宏问题的主要内容,如果未能解决你的问题,请参考以下文章

如何实例化一个 vba 类并从 vb.net 调用一个方法?

从 Visual Studio 2010 (VB.NET) 读取访问查询

如何从 vb.net 中的 aspx.vb 页面调用 webmethod

如何从 vb.net 中的子表单访问父表单属性

如何从 C++ 调用 VB.NET DLL(也调用函数 - 不仅仅是 DLL 文件)

VB.NET 仅从一个字段访问填充组合框