Board logo

標題: 找出控制項在那裡使用並移出 Forms object library的VBA引用 [打印本頁]

作者: Scott090    時間: 2016-12-4 08:42     標題: 找出控制項在那裡使用並移出 Forms object library的VBA引用

Excel檔案曾經使用控制項,後來移除了。
但卻無法移除引用引用項 Microsoft Forms 2.0 object library
[attach]26022[/attach]

網路上遍尋,也無法有效去除。

請問大大們,如何找出 "使用中"的控制項並能移出引用的物件庫
作者: c_c_lai    時間: 2016-12-4 09:59

回復 1# Scott090
你是不是還設定有 "自訂表單" 呢?
如果目前已沒再使用 "自訂表單" (Form1)
那便先將它移除才行。
作者: 准提部林    時間: 2016-12-4 11:27

本帖最後由 准提部林 於 2016-12-4 11:31 編輯

'列出引用項目
Sub Test_Ref()
Dim vRef As Object
With ThisWorkbook.VBProject
     For Each vRef In .References
         MsgBox "【名稱】" & vRef.Name & vbCrLf & "【路徑】" & UCase(vRef.FullPath)
    Next
End With
End Sub

'移除引用項目
Sub Remove_Ref()
Dim vRef As Object
With ThisWorkbook.VBProject
     For Each vRef In .References
         If UCase(vRef.FullPath) = UCase("C:\WINDOWS\system32\FM20.DLL") Then
           .References.Remove vRef
         End If
    Next
End With
End Sub
作者: Scott090    時間: 2016-12-4 14:30

回復 2# c_c_lai


    此工作簿內並未曾設有自訂表單 FORM物件,再找也沒有發現 form1物件

謝謝
作者: Scott090    時間: 2016-12-4 15:03

回復 3# 准提部林

被引用的 forms 物件 在 sysWOW64 路徑,所以 VBA改成如下:
      If UCase(vRef.FullPath) = UCase("C:\WINDOWS\sysWOW64\FM20.DLL") Then
已成功核消此項引用。

不過好奇的是在 system32 內也有一個fm20.dll,2個 .dll 的大小不同
Excel 是 32位元的版本,怎會引用到 64位元的那一個 fm20.dll?

很謝謝
作者: 7777    時間: 2017-1-19 21:40

回復 3# 准提部林

准提部林 大大

本人Excel 是2003 32位元的版本
引用 大大的方式
不知該將內容...放在哪裡??
出現錯誤...如圖

不知道哪裡出問題
能請大大幫忙解惑
感恩
[attach]26423[/attach]
作者: 准提部林    時間: 2017-1-20 10:06

回復 6# 7777


是"VBProject"沒錯, 可進VBE說明檔中輸入關鍵字查詢!
至于錯誤原因, 沒檔案看不出來, 況且我是OFFICE 2000!
看其他大大能否解決???




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