我无法评论现有答案(分数不足),因此我在回答以添加信息。
从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正确地进行转换!