Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 单击网页中的链接botton并使用vba下载保存csv文件_Excel_Vba_Web Scraping - Fatal编程技术网

Excel 单击网页中的链接botton并使用vba下载保存csv文件

Excel 单击网页中的链接botton并使用vba下载保存csv文件,excel,vba,web-scraping,Excel,Vba,Web Scraping,我一直在尝试使用excelvba从获取表格/数据的各种不同方法,但没有任何结果。 我最后一次尝试是,使用excelvba,打开网页,单击CSV,并将文件保存在给定位置 非常感谢您的帮助。我无法从该链接下载任何CSV,该网站似乎返回了一个错误。然而,XML是下载的,因此那里有数据。我想问题可能在网站上 如果CSV文件的URL已知(或可以派生),则可以使用QueryTables方法。您提供的URL将生成“无需显示的数据”和错误消息“调用Web服务时出错” 除了为fullURL手动输入字符串和一些基本

我一直在尝试使用
excelvba
获取表格/数据的各种不同方法,但没有任何结果。 我最后一次尝试是,使用
excelvba
,打开网页,单击
CSV
,并将文件保存在给定位置


非常感谢您的帮助。

我无法从该链接下载任何CSV,该网站似乎返回了一个错误。然而,XML是下载的,因此那里有数据。我想问题可能在网站上

如果CSV文件的URL已知(或可以派生),则可以使用QueryTables方法。您提供的URL将生成“无需显示的数据”和错误消息“调用Web服务时出错”

除了为
fullURL
手动输入字符串和一些基本的错误处理之外,几乎所有这些都来自于使用QueryTables记录宏

Private Sub OpenURL()
'Opens the URL and splits the CSV data in to cells.
Dim fullURL as String '< - variable to contain the URL of the CSV you are attempting to download

'Example URL for CSV download from Yahoo Finance, modify as needed.
fullURL = "http://ichart.finance.yahoo.com/table.csv?s=GM&a=10&b=18&c=2010&d=06&e=27&f=2012&g=d&ignore=.csv"


'This opens the webpage
On Error GoTo ErrOpenURL
With ActiveSheet.QueryTables.Add(Connection:= _
    "URL;" & fullURL, Destination:=Range("A1"))
    .Name = fullURL
    .FieldNames = True
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .PreserveFormatting = True
    .RefreshOnFileOpen = False
    .BackgroundQuery = True
    .RefreshStyle = xlInsertDeleteCells
    .SavePassword = True
    .SaveData = True
    .AdjustColumnWidth = True
    .RefreshPeriod = 0
    .WebSelectionType = xlEntirePage
    .WebFormatting = xlWebFormattingAll
    .WebPreFormattedTextToColumns = True
    .WebConsecutiveDelimitersAsOne = True
    .WebSingleBlockTextImport = False
    .WebDisableDateRecognition = False
    .WebDisableRedirections = False
    .Refresh BackgroundQuery:=False
End With

ExitOpenURL:
Exit Sub 'if all goes well, you can exit

'Error handling...

ErrOpenURL:
Err.Clear
MsgBox "The URL you are attempting to access cannot be opened.",vbCritical
Resume ExitOpenURL


End Sub
Private子OpenURL()
'打开URL并将CSV数据拆分为单元格。
Dim fullURL作为字符串“<-变量,用于包含您尝试下载的CSV的URL
'从Yahoo Finance下载CSV的示例URL,根据需要进行修改。
完整URL=”http://ichart.finance.yahoo.com/table.csv?s=GM&a=10&b=18&c=2010&d=06&e=27&f=2012&g=d&ignore=.csv"
'这将打开网页
关于错误转到错误URL
使用ActiveSheet.QueryTables.Add(连接:=_
“URL;”&fullURL,目标:=范围(“A1”))
.Name=fullURL
.FieldNames=True
.rowNumber=False
.FillAdjacentFormulas=False
.PreserveFormatting=True
.refreshinfoleopen=False
.BackgroundQuery=True
.RefreshStyle=xlInsertDeleteCells
.SavePassword=True
.SaveData=True
.AdjustColumnWidth=True
.RefreshPeriod=0
.WebSelectionType=xlEntirePage
.WebFormatting=xlWebFormattingAll
.WebPreFormattedTextToColumns=True
.WebConsecutiveDelimiterSong=True
.WebSingleBlockTextImport=False
.WebDisableDateRecognition=False
.WebDisableRedirections=False
.Refresh BackgroundQuery:=False
以
ExitOpenURL:
退出Sub“如果一切顺利,您可以退出
'错误处理。。。
ErrOpenURL:
呃,明白了
MsgBox“无法打开您试图访问的URL”,vbCritical
恢复退出
端接头

这里是另一个例子。这将使您到达“保存”对话框

Sub AnotherExample()
Dim URL As String
Dim ieApp As Object
Dim ieDoc As Object
Dim ieForm As Object
Dim ieObj As Object
Dim objColl As Collection

URL = "http://www.bmreports.com/bsp/BMRSSystemData.php?pT=DDAD&zT=N&dT=NRT"

Set ieApp = CreateObject("InternetExplorer.Application")
ieApp.Visible = True
ieApp.Navigate URL

While ieApp.Busy
    'wait...
Wend

Set ieDoc = ieApp.Document
For Each ele In ieApp.Document.getElementsByTagname("span")

    If ele.innerHTML = "CSV" Then
        DoEvents
        ele.Click
        'At this point you need to Save the document manually
        ' or figure out for yourself how to automate this interaction.
    End If
Next

ieApp.Quit
End Sub

我不知道如何自动实现这种“保存”交互,尽管我100%确信它可以完成,但我不想花时间学习如何为您执行此操作。

关于
数据>获取外部数据>从Web
呢。这是XL2010上的菜单命令(可能是2007,或者更接近它)。如果你有2003,它就在那里,只是可能在不同的菜单栏序列下。@ScottHoltzman我尝试了所有选项“获取外部数据”是我的第一个选项,但它证明:(该网站是否为私人供应商?需要pwd?搜索谷歌以使用VBA自动化IE。有大量信息……也许你可以找到你的解决方案。@ScottHoltzman对于我使用“获取外部数据”管理的其他类型的数据,在同一个网站上不需要通行证)但在这一次,一切都失败了。谢谢。你能手动下载CSV文件吗?当我尝试访问CSV按钮时,你提供的URL会产生一条错误消息,“无数据显示”和“调用Web服务时出错”。Web查询不可能:(好的。您将自动单击按钮。我以前从未这样做过,但我想我可以解决。稍后将发布修订。这是一个很好的开始,我找到了保存它的方法。我需要做的就是找出如何插入文件名。如果您已经自动执行“保存”假设您知道文件名和路径,您可以使用
Name
方法重命名文件,例如
Name“C:\myfile.csv”为“C:\Desktop\NewFile.csv”
。此操作将文件从一个位置重命名/移动到另一个位置。您是如何自动执行“保存”的?