我是一位非编码人员/程序员,他尝试创建一个使用某些VBA自动化功能基于特定单元格值导入某些Web数据的Excel电子表格。我已经设法使用Youtube和其他一些网站来整合这个过程的一部分。但是,我碰到了一个我希望有人可以帮助我的路障。Excel VBA自动生成的php表格由php生成
这里是设置:
我想导入一些基于2参数(压力和温度)的一些二氧化碳数据,将驻留在我的Excel表中的2个单独的单元格。 在我的VBA代码中,我设法导航到第一个站点(http://www.peacesoftware.de/einigewerte/co2_e.html),然后查找表格元素,填写并提交表单。 我的问题是当IE导航到下一页的结果。我不知道如何从这个新页面导入表格元素。我假设我需要告诉VBA查看新的页面,但它有一个通用的URL(http://www.peacesoftware.de/einigewerte/calc_co2.php5),所以我对引用的内容感到困惑。 我希望这是所有需要的信息,以清楚地了解我的问题。这是我目前的VBA代码。 “提交”后的结尾部分是我猜测的结果。一旦VBA正在查看正确的表格/页面,我会将焓值和熵值导入到我的Excel电子表格中。 在此先感谢您的帮助!
' updates enthalpy, entropy data from peacesoftware site
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = Range("tempA").Row And Target.Column = Range("tempA").Column Then
Dim IE As Object
Dim pressA As String
Dim tempA As String
Dim denseA As String
Dim enthA As String
Dim entroA As Style
tempA = Range("tempA")
pressA = Range("pressA")
Set IE = CreateObject("InternetExplorer.Application")
' setup internet explorer
IE.Visible = True
IE.navigate "http://www.peacesoftware.de/einigewerte/co2_e.html"
Do
DoEvents
Loop Until IE.readyState = READYSTATE_COMPLETE
' find pressure and temp entry form
IE.document.getElementsByName("druck")(0).Value = pressA
IE.document.getElementsByName("temperatur")(0).Value = tempA
IE.document.forms(0).submit
'Do
'DoEvents
'Loop Until IE.readyState = READYSTATE_COMPLETE
'update new energy data
'IE.navigate table_url ???
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
End Sub
***更新
我想我找到了解决办法,所以我至少可以得到它的功能。 (感谢这篇文章:excel vba form submit and parse data from result)
我需要等待提交后,然后搜索我需要的“td”元素。由于我需要的实际值是元素标签后面的下一个元素,因此我使用TDelement.nextElementSibling.innerText来抓取它。
IE.document.forms(0).submit
' wait for new page to load
Do While IE.Busy: DoEvents: Loop
Set doc = IE.document
Dim sdd As String
Set TDelements = doc.getElementsByTagName("td")
r = 0
For Each TDelement In TDelements
If TDelement.innerText = "Density : " Then
Range("denseA") = TDelement.nextElementSibling.innerText
r = r + 1
End If
Next
再次感谢您的帮助。
感谢回复user3170197,此方法似乎只返回结果表的第一列。我想我可能会遇到一个解决方案,其中我会更新我原来的帖子。(另外,我确定我拥有的是笨拙而缓慢的,我可能会在尝试并在工作后简化它) – Ryan 2014-09-02 20:59:43
嗨,Ryan,此方法返回整型html代码。它不适合msgbox。你想从表格中删除哪些值?所有这些或只是一些? – bayerphi 2014-09-02 21:03:33
我正在寻找表中的密度,熵和焓。正如你所看到的,我非常绿色!我怀疑有一个更好的方法来做到这一点。感谢您的帮助。 – Ryan 2014-09-02 21:11:25