我一直在嘗試各種不同的方法來從this page使用Excel VBA
,但沒有任何結果得到的表格/ CSV文件。 我最後一次嘗試使用Excel VBA
打開網頁,點擊CSV
並將文件保存到指定位置。點擊一個鏈接鈕和下載保存使用VBA
任何幫助將非常感激。
我一直在嘗試各種不同的方法來從this page使用Excel VBA
,但沒有任何結果得到的表格/ CSV文件。 我最後一次嘗試使用Excel VBA
打開網頁,點擊CSV
並將文件保存到指定位置。點擊一個鏈接鈕和下載保存使用VBA
任何幫助將非常感激。
我無法從該鏈接下載任何CSV,該網站似乎正在返回一個錯誤。然而,XML下載,所以那裏有數據。我認爲這個問題可能在網站上。
您可以使用CSV文件的URL的QueryTables方法已知(或可以派生)。您提供的URL會產生「無法顯示數據」,並顯示錯誤消息「調用Web服務時發生錯誤」。
幾乎所有這些都是使用QueryTables記錄宏,例如手動輸入字符串爲fullURL
以及一些基本的錯誤處理。
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
不可能與網絡查詢:( – user1889664 2013-02-16 01:00:52
好吧,你會自動化按鈕點擊,我從來沒有這樣做過,但我認爲我可以弄明白,稍後會發布修訂版本 – 2013-02-16 02:50:45
這是另一個例子。這應該讓你儘可能的「保存」對話框。
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%是可以做到的,我根本不傾向於把時間花在學習如何爲你做它。
這是一個很好的開始,我發現保存所有我需要做的是找出如何插入文件名 – user1889664 2013-02-17 00:41:21
如果你已經自動化了「保存」,假設你知道文件名和路徑,你可以使用'Name'方法來重命名文件,例如'Name「C:\ myfile.csv」作爲「C:\ Desktop \ NewFile.csv」'此操作將文件從一個位置重命名/移動到另一個位置 – 2013-02-17 01:52:16
您是如何自動執行「Save」? – 2013-02-17 01:59:11
'Data> Get External Data> From Web'。這是XL2010上的菜單命令(可能是2007年,或者接近它)。如果你有2003年,它可能在不同的菜單欄序列下。 – 2013-02-15 21:54:44
@ScottHoltzman我試過所有的選項「獲取外部數據」是我的第一個,但它羽敗: – user1889664 2013-02-15 21:57:43
是一個私人供應商的網站?需要pwd?scour谷歌自動化與IE瀏覽器。你可以找到你的解決方案 – 2013-02-15 22:02:36