是否可以使用C#中的Interop库以与Word,Excel或PowerPoint类似的方式创建新的宏?在其他应用程序中,您可以访问Microsoft.Vbe.Interop._VBComponent
,这样您就可以通过Document
,Worksheet
或Presentation
类注入新的宏。它看起来不像Access有类似的东西。 Access具有AllMacros
列表,但它似乎是只读的。我知道如何在项目中执行宏,但我需要能够动态添加宏。我非常感谢任何可以指出我正确方向的人。
答案 0 :(得分:5)
由于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.
}
答案 1 :(得分:2)
取自answers.microsoft.com:
Access中的宏是一个特殊的数据库对象,与其他Office应用程序不同,在这些应用程序中,宏只是一个没有参数的VBA过程。据我所知,您无法以编程方式创建Access宏。 -HansV MVP(2011年4月27日)
在same question上发布了另一个答案,说明您可以使用VB可扩展性库创建新的代码/ VBA对象。