3

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

4

2 回答 2

6

由于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.
}
于 2012-10-23T18:18:03.083 回答
2

取自 answers.microsoft.com:

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

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

于 2012-10-23T00:15:00.413 回答