我需要在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错误之外,你的解决方案最接近于发生任何事情。我将电子表格转换为登录页面,所以我想我需要以某种方式传递用户名和密码
答案 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