对于通过互操作的Microsoft Access创建宏(Create a macro for Mic

2019-07-01 21:04发布

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

Answer 1:

从answers.microsoft.com措施:

在Access宏是一个特殊的数据库对象,在其他Office应用程序不像宏简直是无参数的VBA程序。 据我知道你不能以编程方式创建Access宏。 -HansV MVP(2011年4月27日)

有张贴在另一个回答同样的问题 ,说你可以创建一个使用VB扩展库的新代码/ VBA对象。



Answer 2:

由于HK1的回答,我能够做的正是我需要的。 我想后我的代码,因为几乎没有任何地方的信息如何做到这一点。 我将离开HK1的帖子标记为答案,因为他是什么导致我这个。

编程加入VB模块经由互操作MS-访问

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


文章来源: Create a macro for Microsoft Access via Interop