我已经做了几个小时的 Google 侦探工作(包括搜索 StackOverflow),以寻找一种允许在 VBA 中定位由 JavaScript 生成的 HTML 元素的技术。
例如,我不能在此使用 ie.Document.getElementById(id):http ://www.kisfutures.com/electronic.html?page=quote&sym=NGU12&mode=i
但是,该方法非常有能力在静态页面上查找元素,正如在 google.com 上测试的那样。
我玩过简单地从 Document.body 获取所有 InnerText,然后解析文件以获得所需的 TD 值,但是在尝试拆分位于不同行的两个值时遇到了障碍。例如,Split(..) 将以下内容理解为“2040”:
20
40
据我了解,getElementById(id) 的问题是网站的表格是在页面加载后由 JavaScript 生成的,因此由该 JavaScript 创建的任何元素都不能成为我的 VBA 代码的目标。反正有没有让我的 VBA 代码看到这个 JavaScript 生成的内容?
谢谢您的帮助!
编辑
正在使用的 VBA 代码:
Function Quote(Market, Parameter)
Set ie = CreateObject("InternetExplorer.Application")
ie.Navigate "http://www.kisfutures.com/electronic.html?page=quote&sym=NGU12&mode=i"
While ie.Busy
DoEvents
Wend
Dim id As String
id = "dt1_" & Market & "_" & StrConv(Parameter, vbLowerCase)
Quote = ie.Document.getElementByID(id).InnerText
ie.Quit
End Function
基本上,我尝试使用 Market 的列标题构建 HTML 元素 ID。因此,例如,如果市场为“NGU12”且列标题为“Open”,则构建的 ID 为:“dt1_NGU12_open”,这是包含市场 NGU12 的“Open”值的 TD 元素的 ID。