我面临的问题是,在不同工作簿中的两个不同 Excel 宏中,我使用 Internet Explorer 通过 URL 的字符串变量进行导航。
IExplorer 创建和导航部分的代码类似,它们仅在字符串构造上有所不同,但是如果我们比较两种情况下的字符串(通过添加监视或复制/粘贴),它们是相同的。
我分配的字符串是一个普通的 URL,由多个字符串组合而成。
一切正常,除了在工作簿 B 中导航到完整 URL 时,它不会传输整个 URL,它省略了最后一部分,即“查询”部分,如“?type=ST”,但 dataurl确实有完整的字符串。
现在最好的部分是,如果我写下 URL 的完整字符串: IE.Navigate“https://www.marketwatch.com/investing/stock/aapl?Mod=search”它可以工作并导航到完整的 URL(这是一个示例)
这是正在使用的代码:
Function calling(dataurl As String) As String
Dim IE As InternetExplorer
Dim htmldoc As New HTMLDocument
Set IE = CreateObject("InternetExplorer.Application")
Application.StatusBar = "Setting up..."
IE.Visible = False
IE.navigate dataurl
Application.StatusBar = "Calling server..."
Application.Wait (Now + TimeValue("00:00:03"))
Do Until IE.readyState = 4
IE.Refresh2 (3)
Application.Wait (Now + TimeValue("00:00:05"))
Loop
calling = IE.document.body.innerHTML
IE.Quit
Set IE = Nothing
Application.StatusBar = ""
End Function
我为此尝试了不同的浏览器,但最终 IExplorer 成功了。
发现问题了!我在单元格中形成字符串的文本是“Appl”,当我将其转换为“aapl”(小写)时,Internet Explorer 中的导航命令按预期插入了完整的 URL。
因此,在传递 URL 进行导航时必须注意大小写。
蒂姆感谢您的投入!