通过Interop为Microsoft Access创建宏

时间:2012-10-22 22:35:32

标签: c# ms-access macros access-vba office-interop

是否可以使用C#中的Interop库以与Word,Excel或PowerPoint类似的方式创建新的宏?在其他应用程序中,您可以访问Microsoft.Vbe.Interop._VBComponent,这样您就可以通过DocumentWorksheetPresentation类注入新的宏。它看起来不像Access有类似的东西。 Access具有AllMacros列表,但它似乎是只读的。我知道如何在项目中执行宏,但我需要能够动态添加宏。我非常感谢任何可以指出我正确方向的人。

2 个答案:

答案 0 :(得分:5)

由于HK1的回答,我能够完全按照我的需要做到。我想发布我的代码,因为在任何地方几乎没有关于如何执行此操作的信息。我将HK1的帖子标记为答案,因为他引导我这样做。

以编程方式通过Interop将VB模块添加到MS-Access

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.
}

答案 1 :(得分:2)

取自answers.microsoft.com:

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

same question上发布了另一个答案,说明您可以使用VB可扩展性库创建新的代码/ VBA对象。