使用Excel VBA从多个网页导入数据?

时间:2017-03-31 11:18:34

标签: excel-vba web-scraping vba excel

我有2个网址,我想将目标网页上的整个数据从工作表中的excel中的一列中删除。网址是;     URL; http://www.chambersandpartners.com/Global/firm/257/hogan-lovells     URL; http://www.chambersandpartners.com/Global/firm/3635/king-spalding

当我在excel中通过"数据/来自网络"我可以收集数据,但是当我尝试使用VBA时,不会返回任何数据。我想要一本工作簿中每个URL的单独工作表。然后我想在列表中添加更多URL,以便程序可以遍历它们。请任何人帮忙吗?提前谢谢。

VBA代码如下:

    Sub adds()
    For x = 1 To 5
    Worksheets("chambers").Select
    Worksheets("chambers").Activate
    mystr = "URL;http://www.chambersandpartners.com/Global/firm/257/hogan-     lovells"
    mystr = Cells(x, 1)
    Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = x
    With ActiveSheet.QueryTables.Add(Connection:=mystr,        Destination:=Range("$A$1"))
   'CommandType = 0
   .Name = "hogan-lovells"
   .FieldNames = True
   .RowNumbers = False
   .FillAdjacentFormulas = False
   .PreserveFormatting = True
   .RefreshOnFileOpen = False
   .BackgroundQuery = True
   .RefreshStyle = xlInsertDeleteCells
   .SavePassword = False
   .SaveData = True
   .AdjustColumnWidth = True
   .RefreshPeriod = 0
   .WebSelectionType = xlSpecifiedTables
   .WebFormatting = xlWebFormattingNone
   .WebPreFormattedTextToColumns = True
   .WebConsecutiveDelimitersAsOne = True
   .WebSingleBlockTextImport = False
   .WebDisableDateRecognition = False
   .WebDisableRedirections = False
   .Refresh BackgroundQuery:=False
    End With
   Next x
   End Sub

这是Cells(x, 1)中的五个网址,我试图抓住这段代码:

URL;chambersandpartners.com/Global/firm/257/hogan-lovells 
URL;chambersandpartners.com/Global/firm/3635/king-spalding 
URL;chambersandpartners.com/Global/firm/3636/kirkland-ellis 
URL;chambersandpartners.com/Global/firm/3689/latham-watkins 
URL;chambersandpartners.com/Global/firm/255/linklaters 

1 个答案:

答案 0 :(得分:0)

如果使用默认的Excel Webquery手动添加数据,则可以使用VBA简单地刷新查询。

如果您不需要动态URL处理或解析,这是执行自动查询的最简单方法。

只需创建所有连接,然后使用宏录制记录您的刷新,然后调整生成的VBA。

  

您可以在“数据”标签下找到所有有效连接 - >连接