【问题标题】:Fetch Data from HTML Website using VBA - FREEMAPTOOLS.COM使用 VBA 从 HTML 网站获取数据 - FREEMAPTOOLS.COM
【发布时间】:2014-01-26 22:29:12
【问题描述】:

我正在尝试在此网站中输入邮政编码并使用 VBA 将结果提取到 Excel 中

http://www.freemaptools.com/find-uk-postcodes-inside-radius.htm

简而言之,您输入邮政编码并以英里或公里为单位设置半径,它会为您提供该区域内的所有邮政编码。你可以想象这个工具会非常有用!

这是我目前所拥有的:

Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = 0

url = "http://www.freemaptools.com/find-uk-postcodes-inside-radius.htm" 
ie.Navigate url


state = 0
Do Until state = 4
DoEvents
state = ie.readyState
Loop

如果说单元格 A1 有邮政编码,而单元格 A2 有距离以公里为单位,那就太好了。然后,此脚本会将其视为变量。

我不是 100% 确定我认为我需要解析结果以将它们各自放入自己的单元格中。

对此的任何帮助都将令人难以置信!

【问题讨论】:

    标签: excel vba fetch


    【解决方案1】:

    给你

    Download the file

     Sub postcode()
    
        Dim URL As String, str_output As String, arr_output() As String, row As Long
        Dim obj_Radius As Object, obj_Miles As Object, post_code As Object
        Dim btn As Object, btn_Radius As Object, tb_output As Object
        URL = "http://www.freemaptools.com/find-uk-postcodes-inside-radius.htm"
    
        Dim IE As Object
        Set IE = CreateObject("internetexplorer.application")
    
        IE.Visible = True
        IE.navigate URL
    
        Do While IE.readystate <> 4
            DoEvents
        Loop
    
        delay 5
    
        Set obj_Radius = IE.document.getelementbyid("tb_radius")
        obj_Radius.Value = ThisWorkbook.Sheets(1).Range("B1")
    
    
        Set obj_Miles = IE.document.getelementbyid("tb_radius_miles")
        obj_Miles.Value = ThisWorkbook.Sheets(1).Range("B2")
    
        Set post_code = IE.document.getelementbyid("goto")
        post_code.Value = ThisWorkbook.Sheets(1).Range("B3")
    
        Set btn_Radius = IE.document.getelementsbytagname("Input")
        For Each btn In btn_Radius
            If btn.Value = "Draw Radius" Then
                btn.Click
            End If
        Next
    
        Do While IE.readystate <> 4
            DoEvents
        Loop
    
        delay 10
    
        Set tb_output = IE.document.getelementbyid("tb_output")
        str_output = tb_output.innerText
        arr_output = Split(str_output, ",")
    
        row = 1
        For i = LBound(arr_output) To UBound(arr_output)
            ThisWorkbook.Sheets(1).Range("C" & row) = arr_output(i)
            row = row + 1
        Next
    
    End Sub
    
    Private Sub delay(seconds As Long)
        Dim endTime As Date
        endTime = DateAdd("s", seconds, Now())
        Do While Now() < endTime
            DoEvents
        Loop
    End Sub
    

    【讨论】:

    • 感谢您的帮助。我运行了这段代码,它在 Excel 中的弹出窗口中显示了结果。是否可以将每个结果放在 Excel 中的一个单元格中?因此,对于每个邮政编码 AL1、AL2、AL3、WL12 等都显示在单元格 C1、C2、C3 等中。此外,看起来您必须手动将邮政编码输入到 VBA 中的代码可以查看 Excel 中的单元格例如,如果单元格 A1 包含邮政编码,单元格 A2 包含距离(半径)。谢谢您的帮助!非常感谢。
    • 这太不可思议了,多么棒的工具!许多人会发现这很有帮助。再次感谢
    • 我正在努力接受它,但我需要更多的声誉。我会尽快做。再次感谢
    • @user3173870 非常感谢 :)
    • 感谢您对此的帮助。我需要编写更多的代码,我想付钱给你,我相信你需要 10 分钟。请给我发一封电子邮件。 simon_porter@live.co.uk
    猜你喜欢
    • 2019-11-28
    • 2015-01-19
    • 2014-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多