使用VBA从Web窗体读取数据到Excel?

时间:2013-04-18 00:22:50

标签: excel-vba web-scraping vba excel

我是VBA新手,我需要将this form中的值提取到Excel电子表格中。用户点击估算后,将显示汇率。 Excel电子表格的列标题与表单中的字段名称相匹配。

在表格中,“发送金额”将为50,100,500,1000,2500和7000.“来自”国家将始终为“美国”。工作表中应填写表格中其他字段中针对“美国”及其相应汇率的所有可能选择。

enter image description here

2 个答案:

答案 0 :(得分:0)

Santosh ......有两种方法可以做到这一点

  • 拦截网络服务XML
  • 创建与基础数据库的连接

您需要了解数据库详细信息或在VBA for XML中创建COM模块(这又需要服务器详细信息)

如果你什么都不知道的话。我建议去youtube寻找“VBA com连接”或“VBA XML”。有一些很好的视频,在开放的论坛上交换服务器细节不是一个理想的事情

答案 1 :(得分:0)

这里没有运气,网站永远写下“正在连接...”。但是要解决你的问题,这里有一个示例代码:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim myIE As InternetExplorer, myDoc As HTMLDocument, mySubDoc As HTMLDivElement
Dim sVal As String, lVal As Long

Set myIE = New InternetExplorer
With myIE
    .Visible = True
    Call .navigate("http://stackoverflow.com/")
    While Not .readyState = READYSTATE_COMPLETE
        DoEvents
    Wend
    Set myDoc = .document
End With
'SAMPLE
With mySubDoc
    Set mySubDoc = myDoc.getElementsByClassName("question-summary narrow").Item(0)
    sVal = CStr(mySubDoc.ID)
    lVal = CLng(mySubDoc.NodeType)
    Call MsgBox(sVal)
    Call MsgBox(CStr(lVal))
End With
On Error Resume Next
    Call mySubDoc.Close
    Call myDoc.Close
    Call myIE.stop
    Call myIE.Quit
On Error GoTo 0
Set mySubDoc = Nothing
Set myDoc = Nothing
Set myIE = Nothing

Set myIE = New InternetExplorer With myIE .Visible = True Call .navigate("http://stackoverflow.com/") While Not .readyState = READYSTATE_COMPLETE DoEvents Wend Set myDoc = .document End With 'SAMPLE With mySubDoc Set mySubDoc = myDoc.getElementsByClassName("question-summary narrow").Item(0) sVal = CStr(mySubDoc.ID) lVal = CLng(mySubDoc.NodeType) Call MsgBox(sVal) Call MsgBox(CStr(lVal)) End With On Error Resume Next Call mySubDoc.Close Call myDoc.Close Call myIE.stop Call myIE.Quit On Error GoTo 0 Set mySubDoc = Nothing Set myDoc = Nothing Set myIE = Nothing

请注意:在Excel的VBA(ALT)中+ F11)您必须将参考(工具 - >参考)添加到End SubMicrosoft HTML Object Library项目。

您可以使用上述人员从页面中选取值目标网站上已加载页面的来源。因此,您必须设置所需的值,按“估计”按钮,“查看页面源”并查找要从VBA代码中提取的值的容器节点(当然还要添加到Excel VBA)。将您的网站设置为无法访问的结果页面 - 这就是我能做的所有事情,但是使用上面的代码,您可以确定您在Excel VBA中必须做的其余事情。
如果没有,请发布一个当网站再次出现时,新的问题或在这里询问。

希望这有帮助!