VBA引用項目問題

基本上自己寫的程式自己用沒有問題,當要把做好的專案傳給別人使用的時候,常會有幾項問題發生。

1.VBA引用項目遺失

可能是因為版本問題所引用的函式庫名稱不同造成,解決方法必須要進入VBAIDE中→工具→設定引用項目→將遺失的取消勾選→勾選該本機中所存在的函式庫

For Example:

筆者的電腦中的Excel為2016版64位元,某同事的電腦中的Excel為2013版64位元,由於在函式庫中引用項目的名稱不同,我將檔案傳給某同事之後,必須如同上述將Microsoft Excel 16.0 Object Library(遺失)取消勾選,並且將Microsoft Excel 13.0 Object Library 勾選起來才能解決程式不能執行的問題。


參考資料: 馬克的營建與電腦 中有提到關於引用項目的解決方法,先期引用VS後期引用

2.位元不同所導致(會有開放原始碼的問題,如果有獨家秘方不想被知道的不考慮)

解法我也還沒找到,但是若將原始碼以及引用項目丟入IDE中新建的專案應該是可行的

For Example: 

在 VBA IDE中撰寫完的模組,點選右鍵→匯出檔案→產生*.bas檔。
需要使用的時候再點選模組→匯入檔案,即可以將模組引用進去!
當然也可以用將程式碼copy起來放在word 或 txt 存著,之後再paste過來。




20190307更新:
將原始碼先建立在ExcelVBA中,透過CreateObject方法去找AutoCAD.application可以巧妙避開AutoCAD 版本問題,同時也可以運用在ZWCAD的VBA部分,由於我們機關只有提供ZWCAD2015+專業版,因此程式碼以此代替,另外最重要的一點是因為程式碼建立在Excel因此當不同電腦打開的時候會直接使用符合各主機版本的Excel。

我在工作表("總表")的地方有做了一個切換的按鈕叫做"optAutoCAD"及"optZWCAD"



程式碼範例如下:

Private Sub Class_Initialize()
If Sheets("總表").optAutoCAD = True Then
Call AutoCADInit
ElseIf Sheets("總表").optZWCAD = True Then
Call ZWCADInit
End If
End Sub
Private Sub ZWCADInit()
On Error Resume Next
Set acadapp = GetObject(, "ZWCAD+.Application") 
If err <> 0 Then Set acadapp = CreateObject("ZWCAD+.Application")
acadapp.Visible = True
On Error GoTo 0
Set mo = acadapp.ActiveDocument.ModelSpace
Set pa = acadapp.ActiveDocument.PaperSpace
Set acaddoc = acadapp.ActiveDocument
End Sub
Private Sub AutoCADInit()
On Error Resume Next
Set acadapp = GetObject(, "AutoCAD.application")
If err <> 0 Then Set acadapp = CreateObject("AutoCAD.application")
acadapp.Visible = True
On Error GoTo 0
Set mo = acadapp.ActiveDocument.ModelSpace
Set pa = acadapp.ActiveDocument.PaperSpace
Set acaddoc = acadapp.ActiveDocument
End Sub

留言

  1. 【筆者的電腦中的Excel為2016版64位元,某同事的電腦中的Excel為2013版64位元,由於在函式庫中引用項目的名稱不同,我將檔案傳給某同事之後,必須如同上述將Microsoft Excel 16.0 Object Library(遺失)取消勾選,並且將Microsoft Excel 13.0 Object Library 勾選起來才能解決程式不能執行的問題。】

    菩薩慈悲,末學也常遇此種苦惱,正思如何不用手動來設定引用項目也。
    感恩感恩 南無阿彌陀佛

    回覆刪除
    回覆
    1. 實作如下:
      https://ithelp.ithome.com.tw/articles/10232669

      感恩感恩 讚歎讚歎 南無阿彌陀佛

      刪除

張貼留言

Popular Posts

Excel VBA @ 監造日報表、查驗表 -2

ExcelVBA@施工照片整理的應用範例

Excel VBA@ 監造日報表、查驗表