我正在尝试编写一个自动将预定义模块添加到活动工作簿中的 excel 加载项。
“预定义模块”应满足以下两个要求:
- 这些模块以 .bas 格式从 excel vba 编辑器导出
- 这些 .bas 文件不应该对用户可见。
在搜索 MSDN 之后,我发现这个技巧可以做类似的事情:
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文件的前几行包含一些“META”数据,以前的方法不会解析这些“META”数据,只是将所有代码输出到一个新的模块中,这是意料之中的。
如果我们使用前面的方法,.bas 文件将对用户可见。但我们需要它们是隐形的。
那么,你有什么办法解决这个烂摊子吗?:)