从VBA中的URL下载文本文件

时间:2018-04-16 21:27:58

标签: vba

我需要在VBA中一次下载一个管道分隔文本文件。我已尝试过其他堆栈溢出问题中的许多解决方案,但我似乎无法使任何解决方案工作。它来自我公司的内部维基页面。

该文件类似于:https://wiki.somecompany/downloads/attachments/data.txt

注意:这不是真正的网址

编辑:我在excel中工作。

我对VBA非常陌生,所以我阅读的解决方案可能会有效,但它们不是白痴证明。

我尝试了很多东西,但最有希望的是这里发布的解决方案:EXCEL VBA - To open a text file from a website

我停止使用第一个,因为看起来你需要Mozilla,我不知道如何指定Chrome。

我使用打开的工作簿选项搞砸了,但是我一直收到一个编译错误,上面写着“预期:=”,但我不知道问题是什么或应该在哪里。

编辑:@Tim Williams - 除了VBA错误之外,你的解决方案最接近于发生任何事情。我将电子表格转换为登录页面,所以我想我需要以某种方式传递用户名和密码

1 个答案:

答案 0 :(得分:0)

您应该可以打开宏录制器并快速获得所需内容。实际上,您可能花了10倍的时间来描述场景,然后记录您需要的代码。虽然,您可能无法使用宏记录器导入数据。您仍然可以通过引用CSV导入数据,我认为这与文本文件完全相同。

Sub Import_CSV_File_From_URL()

    Dim URL As String
    Dim destCell As Range

    URL = "http://www.test.com/test.csv"

    Set destCell = Worksheets("test").Range("A1")

    With destCell.Parent.QueryTables.Add(Connection:="TEXT;" & URL, Destination:=destCell)
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileCommaDelimiter = True
        .Refresh BackgroundQuery:=False
    End With

    destCell.Parent.QueryTables(1).Delete

End Sub

如果这对您不起作用,只需下载该文件,然后从硬盘驱动器中导入。

Private Declare Function URLDownloadToFile Lib "urlmon" Alias _
  "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal _
    szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long

Sub DownloadFilefromWeb()
    Dim strSavePath As String
    Dim URL As String, ext As String
    Dim buf, ret As Long
    URL = Worksheets("Sheet1").Range("A2").Value
    buf = Split(URL, ".")
    ext = buf(UBound(buf))
    strSavePath = "C:\Users\rshuell\Desktop\Downloads\" & "DownloadedFile." & ext
    ret = URLDownloadToFile(0, URL, strSavePath, 0, 0)
    If ret = 0 Then
        MsgBox "Download has been succeed!"
    Else
        MsgBox "Error"
    End If
End Sub

enter image description here