通过Interop为Microsoft Access创建宏

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

取自answers.microsoft.com:

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

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

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

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