如何以VBA或程式自動設定引用項目(參照、參考) How to Add/Remove reference programmatically? Use VBA to install Reference





Blogger 孫守真 提到...
請問設定引用項目這項動作可以用程式碼寫出來嗎?亦即在程式執行前,可否讓其自行檢測引用項目是否有漏掉的情況。感謝您。
2014年8月6日 下午5:51
 刪除
Blogger 孫守真 提到...
請問微軟的這個方法可行嗎?不知先生有無好辦法?我還沒試。稍後再試。還望先生有空時能與指教,我有新得亦必奉上。感謝您。
http://support.microsoft.com/kb/308340/zh-tw
2014年8月6日 下午5:53
 刪除
Blogger 孫守真 提到...
看來不行,仍要先引用「Microsoft Visual Basic for Applications Extensibility 5.3」也,這樣還不是得手動引用?還是有設「Microsoft Visual Basic for Applications Extensibility 5.3」為預設引用值的辦法。
再試了。
2014年8月7日 上午10:30
 刪除
Blogger 孫守真 提到...
還有執行上式前,也得先將信任中心的「巨集設定」先設為「信任存取VBA專案物件模型」才行。實在仍屬笨拙....orz
2014年8月7日 上午10:33
 刪除
Blogger 孫守真 提到...
還是這個方法好用呀。可以寫在打開活頁薄事件上看看,我等下試,成功了就不再回了。

On Error Resume Next
Application.VBE.ActiveVBProject.References.AddFromFile (引數為參照引用檔之全檔名(路徑+檔名+副檔名))

因為如我要加入Word,會出現無法進入中斷模式,故On Error Resume Next此行必要。
如何找到要參照引用的檔案的全檔名,我的方法是在設定引用項目中查看想要引用的項目,下方會有「位置:」資訊,若位置太長將無法看到全檔名的字串,則用AutoIt Window Info ,打開後,將滑鼠移到此「位置:」資訊此即可.

http://www.mrexcel.com/forum/excel-questions/590567-use-visual-basic-applications-install-excel-reference.html
2014年8月7日 下午12:00
 刪除
https://www.blogger.com/comment.g?blogID=2802517454909359464&postID=2850066027687592078&page=1&token=1407384033859
Use VBA to install Excel Reference
How to Add/Remove reference programmatically?


Private Sub Workbook_Open()
Sub AddReference()
On Error Resume Next
With Application.VBE.ActiveVBProject.References
    .AddFromFile "C:\Program Files (x86)\Common Files\microsoft shared\VBA\VBA6\VBE6EXT.OLB"
    .AddFromFile "c:\program files\microsoft office\office14\msword.olb"
End With
'http://www.mrexcel.com/forum/excel-questions/590567-use-visual-basic-applications-install-excel-reference.html
''http://support.microsoft.com/kb/308340/zh-tw
'   Dim vbProj As VBProject
'
'   Set vbProj = ActiveWorkbook.VBProject
'   'vbProj.References.AddFromFile "C:\TestFiles\Refme.dot"
'   vbProj.References.AddFromFile "c:\program files\microsoft office\office14\msword.olb"
''按一下 [工具] 功能表上的 [設定引用項目],然後將參考加入 Microsoft Visual Basic for Applications Extensibility 5.3 程式庫中。此程式庫包含參考 VBA 專案的物件。
''"C:\Program Files (x86)\Common Files\microsoft shared\VBA\VBA6"
End Sub

End Sub

Sub AddReference_old()
On Error Resume Next
'
'   Dim vbProj As VBProject
'
'   Set vbProj = ActiveWorkbook.VBProject
'   vbProj.References.AddFromFile "C:\Program Files\Microsoft Office\Office14\MSWORD.OLB"
    Application.ThisWorkbook.VBProject.References.AddFromFile "C:\Program Files\Microsoft Office\Office14\MSWORD.OLB"
    'Application.ThisWorkbook.VBProject.References.VBE.VBProjects
End Sub

留言

小賤賤寫道…
MSDN的檢查程式(小改一下)
Sub CheckReference()
Dim vbProj As VBProject ' This refers to your VBA project.
Dim chkRef As Reference ' A reference.
With Application.VBE.ActiveVBProject.References
.AddFromFile "C:\Program Files (x86)\Common Files\microsoft shared\VBA\VBA6\VBE6EXT.OLB"
.AddFromFile "c:\program files\microsoft office\office14\msword.olb"
End With
Set vbProj = Application.ThisWorkbook.VBProject
For Each chkRef In vbProj.References
If chkRef.IsBroken Then
vbProj.References.Remove chkRef
End If
Next
End Sub

您也測試看看
孫守真寫道…
非常感謝小賤賤菩薩 有機會我一定來試試 感恩您不吝撥冗分享賜教 南無阿彌陀佛
小賤賤寫道…
我測試是可以執行,但是還是有問題發生
主要是自動載入VBE6EXT.OLB這段的引用條件
若是被其他「嚴重的遺失引用條件」先行卡住
整段巨集會無法正常執行先行載入引用的動作
造成無法執行
我還在想怎麼避免.....

熱門文章