在网页中搜索文本文件,并使用vba将该文本文件中的数据导入excel

时间:2014-12-02 00:20:09

标签: html excel vba

我有一个网页,该网页中有一个文本文件。文本文件名每周都在不断变化。

如何在网页中搜索文本文件并将内容下载到Excel工作表中。任何指针从哪里开始?我知道如何使用给定的URL导航到网页。

问题是我不知道这个文本文件的URL(因为它每周都在不断变化),所以我怎么知道这个?

http://usda.mannlib.cornell.edu/MannUsda/viewDocumentInfo.do?documentID=1048

这是网页的链接。我需要在这里下载txt文件(Crop Progress,11.24.2014 [txt])。请帮帮我。

录制的宏:



Sub Macro4()
 With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;http://usda.mannlib.cornell.edu/usda/current/CropProg/CropProg-11-24-2014.txt" _
        , Destination:=Range("$A$1"))
        .CommandType = 0
        .Name = "CropProg-11-24-2014"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlEntirePage
        .WebFormatting = xlWebFormattingNone
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
    End With
End Sub




1 个答案:

答案 0 :(得分:0)

首先打开您从VBA控制的Internet Explorer实例中的网页(来自Microsoft Internet Controls库的ShDocVw.InternetExplorer对象)。 InternetExplorer对象有一个成员'文件'其中包含文档对象模型(DOM),其中包含网页上的所有HTML标记。使用MSHTML库来处理DOM。

您可以在DOM中搜索包含文本" txt"的锚元素。您可以使用document.SelectNodes()中的XPath查询执行此操作。如果您不想使用XPath,可以遍历document.all的元素或使用GetElementsByTagName()。

或者,您可能会发现页面上的链接每次都相同(没有添加或删除),因此文本文件的链接始终位于document.getelementsbytagname返回的数组中的相同位置(&# 34;&#34)。即使用类似document.GetElementsByTagName(" a")(12)的内容,如果它始终是页面上的第13个锚标记。

获得对文本文件超链接的引用后,该URL就位于该锚元素的href属性中。