C# 通过互操作为Microsoft Access创建宏
是否可以使用C#以类似于Word、Excel或PowerPoint的方式使用Microsoft Access中的互操作库创建新宏?在其他应用程序中,您可以访问C# 通过互操作为Microsoft Access创建宏,c#,ms-access,macros,office-interop,C#,Ms Access,Macros,Office Interop,是否可以使用C#以类似于Word、Excel或PowerPoint的方式使用Microsoft Access中的互操作库创建新宏?在其他应用程序中,您可以访问Microsoft.Vbe.Interop.\vbu组件,该组件允许您通过文档、工作表或演示类插入新宏。看起来Access没有类似的功能。Access有一个AllMacros列表,但它似乎是只读的。我知道如何在宏进入项目后执行它,但我需要能够动态添加宏。如果有人能为我指出正确的方向,我将不胜感激。摘自answers.microsoft.co
Microsoft.Vbe.Interop.\vbu组件
,该组件允许您通过文档
、工作表
或演示
类插入新宏。看起来Access没有类似的功能。Access有一个AllMacros
列表,但它似乎是只读的。我知道如何在宏进入项目后执行它,但我需要能够动态添加宏。如果有人能为我指出正确的方向,我将不胜感激。摘自answers.microsoft.com:
Access中的宏是一个特殊的数据库对象,与其他Office应用程序不同,在这些应用程序中,宏只是一个没有参数的VBA过程。据我所知,您无法以编程方式创建Access宏-HASV MVP(2011年4月27日)
网站上发布的另一个答案是,您可以使用VB扩展性库创建新的代码/VBA对象。由于HK1的答案,我能够准确地完成我需要的工作。我想发布我的代码,因为几乎没有关于如何实现这一点的信息。我将把HK1的帖子标记为答案,因为他是引导我走到这一步的人 通过互操作以编程方式向MS Access添加VB模块
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.
}
非常感谢您,我花了一整天的时间寻找这类信息。我尝试了这个方法,但是interop抛出了下面的异常。“其他信息:不信任对Visual Basic Project的编程访问。”