我無法評論現有答案(分數不足),因此我在回答以添加信息。
從Access 2010開始,我遇到了以下語法的無提示故障:
Dim URL As String
URL = "http://foo.com/"
CreateObject("Shell.Application").Open URL
如果用URL括號括起來,我可以使它工作,但是對于子例程(而不是函數)調用語法來說,這似乎是錯誤的。我嘗試吞下返回值,但是除非使用括號將其加倍,否則函數調用語法將失敗。我意識到括號不僅是語法糖,它們還必須做一些事情,這使我相信括號可能會促進隱式轉換。
我注意到這是Open預期的Variant,而不是預期的String。所以我嘗試了CVar,它確實起作用。考慮到這一點,我最好采用以下方法,因為它最大程度地減少了“為什么這里有多余的括號?”。問題。
Dim URL As String
URL = "http://foo.com/"
CreateObject("Shell.Application").Open CVar(URL)
教訓是,在進行OLE自動化調用時,請明確說明使Access VBA正確地進行轉換!