VBA引用項目問題
基本上自己寫的程式自己用沒有問題,當要把做好的專案傳給別人使用的時候,常會有幾項問題發生。
1.VBA引用項目遺失
可能是因為版本問題所引用的函式庫名稱不同造成,解決方法必須要進入VBAIDE中→工具→設定引用項目→將遺失的取消勾選→勾選該本機中所存在的函式庫
For Example:
筆者的電腦中的Excel為2016版64位元,某同事的電腦中的Excel為2013版64位元,由於在函式庫中引用項目的名稱不同,我將檔案傳給某同事之後,必須如同上述將Microsoft Excel 16.0 Object Library(遺失)取消勾選,並且將Microsoft Excel 13.0 Object Library 勾選起來才能解決程式不能執行的問題。
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 ThenCall AutoCADInitElseIf Sheets("總表").optZWCAD = True ThenCall ZWCADInitEnd IfEnd SubPrivate Sub ZWCADInit()On Error Resume NextSet acadapp = GetObject(, "ZWCAD+.Application")If err <> 0 Then Set acadapp = CreateObject("ZWCAD+.Application")acadapp.Visible = TrueOn Error GoTo 0Set mo = acadapp.ActiveDocument.ModelSpaceSet pa = acadapp.ActiveDocument.PaperSpaceSet acaddoc = acadapp.ActiveDocumentEnd SubPrivate Sub AutoCADInit()On Error Resume NextSet acadapp = GetObject(, "AutoCAD.application")If err <> 0 Then Set acadapp = CreateObject("AutoCAD.application")acadapp.Visible = TrueOn Error GoTo 0Set mo = acadapp.ActiveDocument.ModelSpaceSet pa = acadapp.ActiveDocument.PaperSpaceSet acaddoc = acadapp.ActiveDocumentEnd Sub
【筆者的電腦中的Excel為2016版64位元,某同事的電腦中的Excel為2013版64位元,由於在函式庫中引用項目的名稱不同,我將檔案傳給某同事之後,必須如同上述將Microsoft Excel 16.0 Object Library(遺失)取消勾選,並且將Microsoft Excel 13.0 Object Library 勾選起來才能解決程式不能執行的問題。】
回覆刪除菩薩慈悲,末學也常遇此種苦惱,正思如何不用手動來設定引用項目也。
感恩感恩 南無阿彌陀佛
實作如下:
刪除https://ithelp.ithome.com.tw/articles/10232669
感恩感恩 讚歎讚歎 南無阿彌陀佛