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