此問題的整體解決方案是使用late binding。這帶來的不便向後期綁定
Dim xlApp As Object
意味着我們沒有得到任何智能感知xlApp
,並
- 相關常量像
xlEdgeTop
沒有相關的參考
這些問題可能是沒有定義通過在VBA項目中使用條件編譯進行緩解。對於發展,需要參考添加到項目中,並定義一個條件編譯參數
![ContextMenu.png](https://i.stack.imgur.com/OUo9O.png)
![PropertiesDialog.png](https://i.stack.imgur.com/1Nzax.png)
,你可以在你的代碼中使用這樣的
Option Compare Database
Option Explicit
Public Sub WorkWithExcel()
#If LateBinding Then
Dim xlApp As Object
Set xlApp = CreateObject("Excel.Application")
#Else
Dim xlApp As Excel.Application
Set xlApp = New Excel.Application
#End If
Debug.Print xlEdgeTop
End Sub
爲了避免混亂,我會傾向於保持常量在這樣一個單獨的模塊
Option Compare Database
Option Explicit
#If LateBinding Then
Public Const xlEdgeTop = 8
#End If
當代碼調整完成後,刪除引用,將LateBinding
參數設置爲「True」(LateBinding = -1
)並編譯該項目。添加你錯過的任何常量(總是似乎有一兩個),並且在沒有Reference的情況下編譯時,你應該很好地部署。
對於今後的發展會議,設置LateBinding回「假」(LateBinding = 0
),並添加引用回。
有你看着使用[後期綁定(http://support.microsoft.com/ KB/245115)? – 2014-10-02 14:49:35
我使用Late-Binding類型聲明來設置此應用程序,但後來繼續使用「xlEdgeTop」類型變量,提示我添加必要的引用。所以,混合包 - 需要使用常量來修復。感謝您提示評估。 – 2014-10-02 16:02:05