0
我试图写一个Excel插件,可以自动添加预定义模块插入到活动工作簿。如何使用c#从.bas文件加载excel宏模块?
“预定义模块”应符合以下两个条件:
- 这些模块从Excel VBA编辑器出口,在.BAS格式
- 这些.BAS文件不应该对用户可见。
搜索MSDN之后,我发现this trick做类似的事情:
void load_module(EXCEL.Workbook oBook){
VBIDE.VBComponent oModule;
oModule = oBook.VBProject.VBComponents.Add(VBIDE.vbext_ComponentType.vbext_ct_StdModule);
oModule.Name = "module_name";
sCode = "vba script content";
oModule.CodeModule.AddFromString(sCode);
//oModule.CodeModule.AddFromFile(file_name);
}
的“AddFromFile”方法的工作,但只有当文件只包含VBA代码和文件必须在磁盘。
的问题是:
用Excel VBA编辑器生成的文件.BAS包含前几行一些“元”的数据,前面的方法不会解析这些“元”的数据,只是将所有代码输出到一个新的模块中,这是不期望的。
如果我们使用上述方法,在.BAS文件将是用户可见。但我们需要他们成为无形的。
那么,你有什么想法解决这个烂摊子吗? :)
这些元数据是有用的。例如,“CLASS”元只是定义这是一个类定义还是一个模块定义。 – lowatt