Excel中的Web查询问题

时间:2013-11-29 20:43:19

标签: excel encryption web excel-web-query

我在Excel中使用两个不同的Web查询时遇到了一些问题。

1)网站:http://www.danielsoper.com/statcalc3/calc.aspx?id=44

麻烦:我似乎无法获得查询的结果值。基本上,我在excel电子表格中输入参数,我想要结果。我不知道是否相关,但结果仅在您按下计算后才存在。看起来很简单,但我遇到了一些麻烦...

2)网站:http://www.iea.org/statistics/statisticssearch/report/?&country=USA&year=2011&product=Balances

麻烦:我相信也许这个与查询本身无关,因为我确实获得了数据,但结果似乎是加密的......我根本不知道这是不是我做错了或者如果有办法克服这一点。

从我的角度来看,即使第一个SEEMS更容易修复,第二个对我的研究非常有帮助。

我感谢你能给我的任何帮助。

谢谢,

2 个答案:

答案 0 :(得分:1)

对于iea,他们希望您订阅他们的“在线数据服务”,以便他们对所有搜索结果数据进行编码。

对于danielsoper,结果是通过ASP生成的,因此您将无法从Web查询中获取结果。你可以使用VBA和MSXML来获取它们,但你最好只是在VBA中复制算法或者修改一个不同的网站。

答案 1 :(得分:0)

以下代码适用于您的第一个网站。将输入放在单元格“A1”和“A2”中,结果放在“A3”和“A4”中。修改以适合您的工作表。

' Open IE, navigate to the website of interest and loop until fully loaded
Set ie = CreateObject("InternetExplorer.Application")

With ie
    .Visible = True
    .navigate "http://www.danielsoper.com/statcalc3/calc.aspx?id=44"
    .Top = 50
    .Left = 530
    .Height = 400
    .Width = 400

Do Until Not ie.Busy And ie.ReadyState = 4
    DoEvents
Loop

End With

' Insert data from cells "A1" and "A2" into the webpage and click "Calculate!"
ie.Document.getElementById("pageContent_gridParameters_txtParameterValue_0").Value = Range("A1")
ie.Document.getElementById("pageContent_gridParameters_txtParameterValue_1").Value = Range("A2")
ie.Document.getElementById("pageContent_btnCalc").Click

' Collect the results and place them on the activesheet
my_var = ie.Document.body.innerhtml

pos_1 = InStr(1, my_var, "Result_0", vbTextCompare)
pos_2 = InStr(pos_1, my_var, ">", vbTextCompare)
pos_3 = InStr(pos_1, my_var, "<", vbTextCompare)
One_Tailed = Mid(my_var, 1 + pos_2, pos_3 - (1 + pos_2))

pos_4 = InStr(pos_3, my_var, "Result_1", vbTextCompare)
pos_5 = InStr(pos_4, my_var, ">", vbTextCompare)
pos_6 = InStr(pos_5, my_var, "<", vbTextCompare)
Two_Tailed = Mid(my_var, 1 + pos_5, pos_6 - (1 + pos_5))

Range("A3") = One_Tailed
Range("A4") = Two_Tailed