从C#Winform调用Access 2013模块
我已经开始涉足win forms中MS Office产品的自动化,并且遇到了麻烦。正如标题所示,我正在VS2010(.NET 4.0)中使用C#,连接到Access 2013后端 这是我的问题,我试图在我的程序的后端数据库中运行一个模块。我在Stack上看到了许多帖子,读了一些关于MSDN的文章,并得出以下结论:从C#Winform调用Access 2013模块,c#,.net,winforms,automation,ms-access-2013,C#,.net,Winforms,Automation,Ms Access 2013,我已经开始涉足win forms中MS Office产品的自动化,并且遇到了麻烦。正如标题所示,我正在VS2010(.NET 4.0)中使用C#,连接到Access 2013后端 这是我的问题,我试图在我的程序的后端数据库中运行一个模块。我在Stack上看到了许多帖子,读了一些关于MSDN的文章,并得出以下结论: using Access = Microsoft.Office.Interop.Access; void RunAccessModule() { try {
using Access = Microsoft.Office.Interop.Access;
void RunAccessModule()
{
try
{
Access.Application oAccess = new Access.Application();
oAccess.OpenCurrentDatabase("H:\\MyConnection\\UtilityBackEnd.accdb", false);
oAccess.Run("MakeProjectTable"); //Name of procedure in module
oAccess.CloseCurrentDatabase();
}
catch (Exception ex)
{
ex.Message;
}
}
当我运行我的程序时,我得到一个错误:Microsoft Access找不到过程“MakeProjectTable”。我尝试使用run命令更具体一些(即,oAccess.run(“Module1.MakeProjectTable”);
),但我收到了类似的错误消息(找不到'Module1.MakeProjectTable.
。有人能看到我到目前为止的问题吗,和/或提出建议吗?如果您将VBA(Access)代码声明为
公共子MakeProjectTable()
在“常规”模块
,而不是类模块
或Microsoft Access类对象
。换句话说,如果在Access中打开数据库,并在VBA编辑器中查看子模块,它必须位于Project Explorer的“模块”文件夹下的模块中:
如文件所述,运行()方法只能调用VBA代码。请改用DoCmd。是否
MakeProjectTable
是UtilityBackEnd.accdb
数据库中标准模块中的Public
过程?否,我现在更改它更改后出现错误。为了澄清,声明行现在显示:Public Sub MakeProjectTable()
这似乎是正确的;这是我两天前试图告诉他们的。:-)如果他们仍然有问题,请在独立访问会话中打开H:\MyConnection\utilitybend.accdb
并确保它确实有效:Application.Run“MakeProjectTable”
是的,我看到了。我想一幅漂亮的图片可能会有所帮助。:)我想应该是的!我突然想到,标准模块是不够的-(@HansUp我真的很抱歉之前没有理解你们,我刚试过这个,第一枪就成功了,谢谢你们两位。