Board logo

標題: [發問] 有辦法共用VBA巨集模組嗎? [打印本頁]

作者: s13030029    時間: 2019-6-18 11:33     標題: 有辦法共用VBA巨集模組嗎?

假設我現在有多個檔案,我的檔案的程式碼都是一樣的,那VBA的模組有辦法封裝或是共用嗎?
這樣如果程式碼要修改或是維護就不用一個一個改了。
作者: n7822123    時間: 2019-6-19 01:31

本帖最後由 n7822123 於 2019-6-19 01:38 編輯

回復 1# s13030029


方法一:  把你的巨集寫在 個人巨集活頁簿 ,只要修改裡面的巨集即可讓各個excel都可使用

方法二: 把你的巨集匯出到固定位置的資料夾內,未來只要維護該資料夾內的巨集檔案(.bas)即可
              在你要執行巨集的檔案寫入以下巨集,此巨集可以讓活頁簿打開的時候,會自動匯入指定的巨集檔 (.bas)
              注意,要寫在ThisWorkbook 裡面, 路徑檔名的部分請自己設定

自動匯入BAS檔的巨集如下:

Private Sub Workbook_Open()
xPath$ = "C:\Users\user\Desktop\要匯入的VBA.bas"    '路徑檔名自己設定
ThisWorkbook.VBProject.VBComponents.Import xPath
End Sub
作者: n7822123    時間: 2019-6-19 09:25

回復 2# n7822123


如果你的電腦只有你一個使用者的話,我會建議方法一比較簡單。
作者: s13030029    時間: 2019-6-19 10:37

回復 3# n7822123
我試了第二個方法,我每次打開檔案他就匯入一次模組@@
我的模組就多了好幾個,這要怎麼解決????
作者: n7822123    時間: 2019-6-19 21:46

本帖最後由 n7822123 於 2019-6-19 21:47 編輯

回復 5# s13030029


恩......這是個問題 哈哈,那就只能先移除再匯入啦,如下

Private Sub Workbook_Open()
With ThisWorkbook.VBProject
  For Each vbc In .VBComponents
    If vbc.Type = 1 Then .VBComponents.Remove .VBComponents(vbc.Name) 'type 1=一般模組
  Next
End With
XPath$ = "C:\Users\user\Desktop\要匯入的VBA.bas"  '路徑檔名自己設定
ThisWorkbook.VBProject.VBComponents.Import XPath
End Sub




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)