【问题标题】:Create a macro for Microsoft Access via Interop通过互操作为 Microsoft Access 创建宏
【发布时间】:2012-10-12 19:45:15
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    取自 answers.microsoft.com:

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

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

    【讨论】:

    • 非常感谢,我花了一整天的时间寻找那种信息。
    【解决方案2】:

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

    【讨论】:

    • 我试过了,但是下面的异常是由互操作引发的。 “附加信息:对 Visual Basic 项目的编程访问不受信任。”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-22
    • 1970-01-01
    相关资源
    最近更新 更多