2013-02-15 60 views
-1

我一直在嘗試各種不同的方法來從this page使用Excel VBA,但沒有任何結果得到的表格/ CSV文件。 我最後一次嘗試使用Excel VBA打開網頁,點擊CSV並將文件保存到指定位置。點擊一個鏈接鈕和下載保存使用VBA

任何幫助將非常感激。

+0

'Data> Get External Data> From Web'。這是XL2010上的菜單命令(可能是2007年,或者接近它)。如果你有2003年,它可能在不同的菜單欄序列下。 – 2013-02-15 21:54:44

+0

@ScottHoltzman我試過所有的選項「獲取外部數據」是我的第一個,但它羽敗: – user1889664 2013-02-15 21:57:43

+0

是一個私人供應商的網站?需要pwd?scour谷歌自動化與IE瀏覽器。你可以找到你的解決方案 – 2013-02-15 22:02:36

回答

0

我無法從該鏈接下載任何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 
+0

不可能與網絡查詢:( – user1889664 2013-02-16 01:00:52

+0

好吧,你會自動化按鈕點擊,我從來沒有這樣做過,但我認爲我可以弄明白,稍後會發布修訂版本 – 2013-02-16 02:50:45

1

這是另一個例子。這應該讓你儘可能的「保存」對話框。

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%是可以做到的,我根本不傾向於把時間花在學習如何爲你做它。

+0

這是一個很好的開始,我發現保存所有我需要做的是找出如何插入文件名 – user1889664 2013-02-17 00:41:21

+0

如果你已經自動化了「保存」,假設你知道文件名和路徑,你可以使用'Name'方法來重命名文件,例如'Name「C:\ myfile.csv」作爲「C:\ Desktop \ NewFile.csv」'此操作將文件從一個位置重命名/移動到另一個位置 – 2013-02-17 01:52:16

+0

您是如何自動執行「Save」? – 2013-02-17 01:59:11