在VBA中,我們除了利用程式來做單一軟體的自動化以外,甚至會將資料傳給另一個軟體來處理/儲存或顯示,比如,一個Excel的表格資料,傳到Word成為表格,或是傳給OutLook提供Email發送,甚至利用ADO傳給資料庫,或者在下常利用的與AutoCAD結合。
單一軟體單一程式執行一般不會有問題,若是有跨軟體的時候,在撰寫程式時也不會有太大問題,問題是將程式傳給他人使用時,設計者並無法預估對方使用的軟體版本,當然就會造成某些函式庫遺漏的錯誤訊息,程式當然就動不了。
在Office系列,97/2000/2003/2007/2010.....版本眾多,只要版本沒匹配,程式就不動。若再加上AutoCAD每年一個版本,程式開發者要準備多少版的組合才能符合使用者的需求?
在引用項目中,一般我們會先行引用,因為這樣程式設計時才能帶出該物件的屬性/方法,可確保程式碼的正確及快速編寫,這就我們所謂先期引用,當然所有上面會發生的問題也是如此造成。
另外一種所謂後期引用的方法,
Set obj=CreateObject("??????.Appliction")
程式物件建立的時候,他會自動檢測是否有符合的函式庫,就可以解決掉上述找不到的問題,不過有幾個缺點
- 效能不如先期引用。
- 程式撰寫無法帶出屬性/方法等資訊
- 無法利用瀏覽物件的功能視窗
- 對屬性方法按F1沒有相關的說明文件
至於你要選用哪一種,那就見仁見智了...
Mark您好
回覆刪除以office為例,我個人的看法是,程式只支援安裝軟體時的内定路徑,只為便於維護程式
@lung:沒讚可以按!
刪除基本上程式自己寫自己用應該不會有太大問題,問題出在若釋出讓別人使用會造成困擾,除非將程式碼開放,使用者才能修正引用選項..><