0

我正在尝试编写一个自动将预定义模块添加到活动工作簿中的 excel 加载项。

“预定义模块”应满足以下两个要求:

  1. 这些模块以 .bas 格式从 excel vba 编辑器导出
  2. 这些 .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 代码且文件必须在磁盘上时。

问题是:

  1. excel vba编辑器生成的.bas文件的前几行包含一些“META”数据,以前的方法不会解析这些“META”数据,只是将所有代码输出到一个新的模块中,这是意料之中的。

  2. 如果我们使用前面的方法,.bas 文件将对用户可见。但我们需要它们是隐形的。

那么,你有什么办法解决这个烂摊子吗?:)

4

1 回答 1

0

我会这样做:

  1. 将文件从网络位置复制到本地磁盘。
  2. 从文件中删除不需要的“META”数据。
  3. 加载到 Excel 中。
  4. 从磁盘中删除本地副本。

当然,他们也可以访问网络上的文件,但他们应该更难找到。

于 2012-09-18T01:51:45.403 回答