我正在尝试编写一个excel加载项,可以自动将预定义的模块添加到活动工作簿中。
“预定义模块”应满足以下两个要求:
搜索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文件在前几行中包含一些“META”数据,之前的方法不会解析这些“META”数据,只是将所有代码输出到一个新模块中,这是不期望的。
如果我们使用以前的方法,用户可以看到.bas文件。但我们需要它们是不可见的。
那么,你有什么想法来解决这个烂摊子吗? :)
答案 0 :(得分:0)
我会这样做:
当然,他们也可以访问网络上的文件,但他们应该更难找到。