Database 用于将网站表导入excel的宏

Database 用于将网站表导入excel的宏,database,excel,web,vba,Database,Excel,Web,Vba,我对所有的东西都很陌生(学术/心理学家),我试图从这个网站上获取数据来创建我的网站 我的方法(我找不到“列出所有”功能)是使用我在VBA中从几个来源(见下文)编译的代码查询英国邮政编码地区,即AB1 我的问题有三个方面: 我想对所有3000多个英国邮政编码地区重复这一点(我可以得到一个列表) 我想删除它返回的额外行(如果运行代码1-22和 548+,但这将因地区而异) 我想把所有的数据编译成一个数据库,而不是3000张单独的表格 excel getdata/webquery/table 1(使用

我对所有的东西都很陌生(学术/心理学家),我试图从这个网站上获取数据来创建我的网站

我的方法(我找不到“列出所有”功能)是使用我在VBA中从几个来源(见下文)编译的代码查询英国邮政编码地区,即AB1

我的问题有三个方面:

  • 我想对所有3000多个英国邮政编码地区重复这一点(我可以得到一个列表)
  • 我想删除它返回的额外行(如果运行代码1-22和 548+,但这将因地区而异)
  • 我想把所有的数据编译成一个数据库,而不是3000张单独的表格
  • excel getdata/webquery/table 1(使用)几乎完全符合我的要求,只是它只返回第1页,但我还无法解决如何自动/缝合我想要的代码

    有人能帮我解决这个问题吗

    干杯

    赛博

    ps抱歉忘了添加我不直接从direct pages抓取的原因是使用了两种不同类型的个人页面(见下文),在URL中似乎没有任何可预测的ID生成方法。我将编写第二个查询,以同样的方式扫描FCA编号,以用更完整的数据填充第二个数据库

    (register.fca.org.uk/ShPo_FirmDetailsPage?id=001b000000MfTlAAAV和


    fca consumer credit Missional.force.com/CS_RegisterSearchPageNew?accId=210552)

    下面的脚本将为您执行循环。我将让您来执行清理。提示,提示…使用宏记录器

    Sub GetCourseList()
    
    Dim URL As String
    Dim qt As QueryTable
    Dim ws As Worksheet
    
    Set ws = Worksheets.Add
    
    Dim lastRow As Long
    lastRow = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row
    
    variable = 1
    Here:
    URL = "https://register.fca.org.uk/shpo_searchresultspage?search=AB" & variable & "&TOKEN=3wq1nht7eg7tr"
    
    lastRow = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row
    
    Set qt = ws.QueryTables.Add( _
        Connection:="URL;" & URL, _
        Destination:=Range("A" & lastRow))
    
    With qt
        .RefreshOnFileOpen = True
        .Name = "CoursesFromWiseOwl"
        .FieldNames = True
        .WebSelectionType = xlAllTables
        .Refresh BackgroundQuery:=False
    End With
    
    variable = variable + 1
    GoTo Here:
    
    End Sub
    
    我要说的最后一件事是,R会为你做得更快,更快。如果我是你,我会用R来做这类事情

    Sub GetCourseList()
    
    Dim URL As String
    Dim qt As QueryTable
    Dim ws As Worksheet
    
    Set ws = Worksheets.Add
    
    Dim lastRow As Long
    lastRow = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row
    
    variable = 1
    Here:
    URL = "https://register.fca.org.uk/shpo_searchresultspage?search=AB" & variable & "&TOKEN=3wq1nht7eg7tr"
    
    lastRow = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row
    
    Set qt = ws.QueryTables.Add( _
        Connection:="URL;" & URL, _
        Destination:=Range("A" & lastRow))
    
    With qt
        .RefreshOnFileOpen = True
        .Name = "CoursesFromWiseOwl"
        .FieldNames = True
        .WebSelectionType = xlAllTables
        .Refresh BackgroundQuery:=False
    End With
    
    variable = variable + 1
    GoTo Here:
    
    End Sub