2012-09-17 57 views
0

我試圖寫一個Excel插件,可以自動添加預定義模塊插入到活動工作簿。如何使用c#從.bas文件加載excel宏模塊?

「預定義模塊」應符合以下兩個條件:

  1. 這些模塊從Excel VBA編輯器出口,在.BAS格式
  2. 這些.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代碼和文件必須在磁盤。

的問題是:

  1. 用Excel VBA編輯器生成的文件.BAS包含前幾行一些「元」的數據,前面的方法不會解析這些「元」的數據,只是將所有代碼輸出到一個新的模塊中,這是不期望的。

  2. 如果我們使用上述方法,在.BAS文件將是用戶可見。但我們需要他們成爲無形的。

那麼,你有什麼想法解決這個爛攤子嗎? :)

回答

0

我會做如下:從網絡位置

  1. 將文件複製到本地磁盤。
  2. 從文件中刪除不需要的「元」的數據。
  3. 加載到Excel中。
  4. 從磁盤刪除本地副本。

當然,網絡上的文件也可以被他們訪問,但它們應該很難找到。

+0

這些元數據是有用的。例如,「CLASS」元只是定義這是一個類定義還是一個模塊定義。 – lowatt