Board logo

標題: [發問] 引用其他控制項的問題 [打印本頁]

作者: stillfish00    時間: 2012-12-26 11:16     標題: 引用其他控制項的問題

請問 , 因為我設計好的表單有用到listview控制項 ,
該控制項屬Microsoft ListView Control  (COMCTL32.OCX)
但可能到了另外一台電腦 , 就沒有該OCX 或存放位置變了 ,
導致出現錯誤  "物件程式庫不合法 , 或其中所引用的物件定義已經不存在"
要怎樣才能解決這類的問題?
或者有辦法在workbook打開時用code去設定引用的控制項路徑嗎?
作者: mark15jill    時間: 2012-12-26 11:29

回復 1# stillfish00


    可將路徑  另設一元件 加以控制
並於 開啟時 跳出元件 藉此控制
作者: stillfish00    時間: 2012-12-27 17:59

回復  stillfish00


    可將路徑  另設一元件 加以控制
並於 開啟時 跳出元件 藉此控制
mark15jill 發表於 2012-12-26 11:29


不好意思 , 我不懂 "開啟時 跳出元件 藉此控制" 的意思是 ?

我目前找到的語法 , 比較接近我想要的是用像
ThisWorkbook.VBProject.References.AddFromFile
去改變引用路徑 , 不過暫時還沒空去實際試試看是不是OK ...
作者: mark15jill    時間: 2012-12-28 08:23

回復 3# stillfish00


    這麼說好了

1.你設計好的表單 是涵蓋在Excel VBA 內,還是另外包裝成執行檔?
2.所謂設定一開檔案就執行的意思
Private Sub Workbook_Open()
'userform1.show
'applocation XXXX
End Sub

這是當檔案開啟就執行XXXX副程式 或 表單呼叫
作者: stillfish00    時間: 2012-12-28 12:15

回復 4# mark15jill
是Excel VBA的表單 , 但表單上的控制項是用新增控制項去勾選的
如圖勾選的Microsoft ListView Control  , 其位置在C:\Windows\System32\COMCTL32.OCX
[attach]13719[/attach]
但若別人在C:\Windows\System32\沒有該OCX , 或系統路徑不一樣
則在執行底下時 , 就會出錯
Private Sub Workbook_Open()
    Load userform1
    userform1.show
End Sub
作者: mark15jill    時間: 2013-1-2 09:30

本帖最後由 mark15jill 於 2013-1-2 09:31 編輯

回復 5# stillfish00

會錯誤是正常的..
因為指向錯誤 或 無指向之項目
程式當然判讀不出來

建議
可再開啟程式前先判讀該檔案是否存在於判讀目錄底下

Private Sub Workbook_Open()
if dir("C:\Windows\System32\COMCTL32.OCX") <>"" then
      Load userform1
     userform1.show
endif
end sub

或者
判讀無此檔案 或 不再預設目錄底下的話
搜尋預設目錄且將檔案複製到該目錄(這有點類似木馬的寫法)
作者: Hsieh    時間: 2013-1-2 10:17

回復 1# stillfish00
要解決該電腦中無此控制項或位置錯誤的問題
無疑的就是要在OFFICE預設資料夾內置入該控制項的DLL
解決方法當然就是將你電腦中該DLL檔案複製到欲使用此檔案的電腦C:\Windows\system32\
的目錄下
作者: stillfish00    時間: 2013-1-2 15:52

回復 6# mark15jill
回復 7# Hsieh

謝謝兩位回應 ,
原本是想說若同時附上ocx/dll給別人時 , 有沒有其它指定引用路徑方法可以迴避這錯誤
程式中直接複製過去我也覺得不太好...
看起來似乎只能提示使用者後 , 讓他自己手動複製會好一點?
作者: Hsieh    時間: 2013-1-2 16:14

回復 8# stillfish00

綜合以上討論
就是必須複製此OCX或是DLL檔案然後判斷該電腦是否已有此檔案
類似附件
[attach]13758[/attach]
作者: mark15jill    時間: 2013-1-3 08:26

回復 8# stillfish00

可以新增一個提示訊號(如 MSGBOX)
此訊號在判斷預設目錄無檔案下根據結果進行是否複製的選項




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