如何将OpenArgs传递的链接设为WebBrowser控件的ControlSource属性
问题原因
当你在控件属性表中填写="路径"格式的内容时,Access会自动将其识别为表达式并解析出实际路径值。但在VBA运行时直接给ControlSource属性赋值同格式的字符串时,Access不会主动做表达式解析,会把整个带等号、引号的字符串当作无效路径处理,这就是报错的核心原因。
解决方案(任选一种即可)
方案1:修改参数传递逻辑(最推荐)
直接传递纯路径字符串,不需要额外加等号和引号:
调用窗体修改后代码:
DoCmd.OpenForm "frm_CS_Help", OpenArgs:="C:\Users\bamad\Documents\CSHelp.html#DROPBOX"
帮助窗体代码无需修改,保持原有即可:
Private Sub Form_Load() Dim strPath As String strPath = Me.OpenArgs WebBrowser43.ControlSource = strPath End Sub
方案2:保留原有传参逻辑,增加表达式解析
如果不想修改调用侧代码,在帮助窗体中用Eval函数解析传入的表达式字符串即可:
帮助窗体修改后代码:
Private Sub Form_Load() Dim strPath As String strPath = Me.OpenArgs WebBrowser43.ControlSource = Eval(strPath) End Sub
方案3:改用WebBrowser原生Navigate方法(兼容性最好)
直接调用控件的导航方法,绕开ControlSource的表达式解析规则:
调用窗体保持传纯路径,帮助窗体代码修改为:
Private Sub Form_Load() Dim strPath As String strPath = Me.OpenArgs WebBrowser43.Navigate strPath End Sub
内容的提问来源于stack exchange,提问作者Brother Arnold
相关产品推荐
相关产品推荐

