標題:
[發問]
引用其他控制項的問題
[打印本頁]
作者:
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/)