簡體   English   中英

Excel不保存VBA引用

[英]Excel isn't saving VBA reference

我在一些VBA模塊/類中創建了一個帶有大量功能的Excel .xlsm文件,現在我決定將代碼分開,因為它將在4個不同的站點共享。

我將vba_code.xlsm保存到共享位置並創建了我的4個不同的siteXYZ.xlsm文件。

在每個siteXYZ.xlsm文件中,我將轉到VBA編輯器中的“工具|引用”菜單,並在共享文件位置\\ share_location \\ fileLocation \\ vba_code.xlsm中添加對共享vba_code.xlsm的引用。

此時,我測試了siteXYZ.xlsm中的函數,一切都運行正常。

但是,每次我保存siteXYZ.xlsm,關閉Excel然后重新打開文件,它將丟失對我的vba_code.xlsm文件的引用。

如何使用siteXYZ.xlsm文件保存VBA引用?

花了幾個小時搜索答案並嘗試各種方法,例如向vba_code.xlsm文件添加數字簽名,並嘗試以編程方式在Workbook_open上添加引用,我發現了一個描述問題的論壇帖子:

我的siteXYZ.xlsm文件中沒有定義VBA代碼或宏,因此Excel拒絕保存VBA項目,因此未將VBA引用保存到vba_code.xlsm。

解決方案很簡單:

任何 VBA代碼添加到siteXYZ.xlsm並保存。

我只是在VBA編輯器下雙擊ThisWorkbook,並向Workbook_open添加了一個不執行任何操作的函數:

Private Sub Workbook_open()

End Sub

實現此目的的通常方法是將vba_code.xlsm保存為插件(XLA或XLAM)並將其存儲在共享位置,然后將插件添加到4個不同站點的Excel中。
您也可以使用自己的Addin Loader而不是Excel來擴展此方法。
http://www.decisionmodels.com/downloads.htm上有一個Addin Loader的工作示例

關注@nvuono

您需要為excel文件添加某種模塊/引用,以便保存您添加的引用。

Private Function addJunkModuleToGetReferencesToSave(ByRef wb As Workbook)

    Set new_module = wb.VBProject.VBComponents.Add(vbext_ct_ClassModule)
    new_module.name = "Junk"
    new_module.CodeModule.AddFromString ""

End Function

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM