C# 通过互操作为Microsoft Access创建宏

C# 通过互操作为Microsoft Access创建宏,c#,ms-access,macros,office-interop,C#,Ms Access,Macros,Office Interop,是否可以使用C#以类似于Word、Excel或PowerPoint的方式使用Microsoft Access中的互操作库创建新宏?在其他应用程序中,您可以访问Microsoft.Vbe.Interop.\vbu组件,该组件允许您通过文档、工作表或演示类插入新宏。看起来Access没有类似的功能。Access有一个AllMacros列表,但它似乎是只读的。我知道如何在宏进入项目后执行它,但我需要能够动态添加宏。如果有人能为我指出正确的方向,我将不胜感激。摘自answers.microsoft.co

是否可以使用C#以类似于Word、Excel或PowerPoint的方式使用Microsoft Access中的互操作库创建新宏?在其他应用程序中,您可以访问
Microsoft.Vbe.Interop.\vbu组件
,该组件允许您通过
文档
工作表
演示
类插入新宏。看起来Access没有类似的功能。Access有一个
AllMacros
列表,但它似乎是只读的。我知道如何在宏进入项目后执行它,但我需要能够动态添加宏。如果有人能为我指出正确的方向,我将不胜感激。

摘自answers.microsoft.com:

Access中的宏是一个特殊的数据库对象,与其他Office应用程序不同,在这些应用程序中,宏只是一个没有参数的VBA过程。据我所知,您无法以编程方式创建Access宏-HASV MVP(2011年4月27日)


网站上发布的另一个答案是,您可以使用VB扩展性库创建新的代码/VBA对象。

由于HK1的答案,我能够准确地完成我需要的工作。我想发布我的代码,因为几乎没有关于如何实现这一点的信息。我将把HK1的帖子标记为答案,因为他是引导我走到这一步的人

通过互操作以编程方式向MS Access添加VB模块

try
{
    Microsoft.Office.Interop.Access.Application accessApp = new Microsoft.Office.Interop.Access.Application();
    accessApp.Visible = true;

    accessApp.OpenCurrentDatabase(filePath);

    // Get the active VBProject item
    VBProject project = accessApp.VBE.VBProjects.Item(1);

    VBComponent module = project.VBComponents.Add(vbext_ComponentType.vbext_ct_StdModule);

    module.CodeModule.AddFromString(script);
}
catch (Exception ex)
{
    // Trust or the VBA Project Module has not been enabled.
}

非常感谢您,我花了一整天的时间寻找这类信息。我尝试了这个方法,但是interop抛出了下面的异常。“其他信息:不信任对Visual Basic Project的编程访问。”