請教有關ADODB.STREAM和Microsoft.XMLHTTP的用法
- 帖子
- 83
- 主題
- 17
- 精華
- 0
- 積分
- 105
- 點名
- 0
- 作業系統
- XP
- 軟體版本
- XP
- 閱讀權限
- 20
- 註冊時間
- 2010-12-28
- 最後登錄
- 2018-8-8
|
5#
發表於 2012-8-31 02:25
| 只看該作者
回復 3# GBKEE
謝版大,可是我權限不夠,不能下載呢
另外,可以介紹Stream的用法嗎?好像不易理解..... |
|
|
|
|
|
|
|
- 帖子
- 83
- 主題
- 17
- 精華
- 0
- 積分
- 105
- 點名
- 0
- 作業系統
- XP
- 軟體版本
- XP
- 閱讀權限
- 20
- 註冊時間
- 2010-12-28
- 最後登錄
- 2018-8-8
|
4#
發表於 2012-8-31 02:23
| 只看該作者
回復 2# HSIEN6001
謝謝你的指教,看起來你寫的CODE比我工整多了。
但我看到你好像把我的code分成三部份,第一個命令是當開這個EXCEL FILE時啟動
之後在"Microsoft.XMLHTTP"部份讀取CSV,先檢查檔案是否存在,如存在便先刪掉再建立一個新的(這個太好了,現時我是手動刪除的,謝謝)
然後用EXCEL VBA CALL ACCESS行MODULE,對嗎?
但當中有兩個問題,由於YAHOO提供的CSV沒有股票編號,如果不在寫入ACCESS時加上便無法確認這個RECORD是那只股票
另外,這個寫法還是需要,讀取YAHOO資料>儲存成CSV>讀取CSV>寫入ACCESS>刪除CSV
我上面的CODE,其實是可以做到的,但我希望當用"Microsoft.XMLHTTP"讀取YAHOO資料時,能夠不用儲存成CSV,直接把資料寫到ACCESS中,不用不斷重複建立和刪除CSV(因為我會抓數百間公司資料)。 |
|
|
|
|
|
|
|
- 帖子
- 219
- 主題
- 24
- 精華
- 0
- 積分
- 243
- 點名
- 0
- 作業系統
- Windows10
- 軟體版本
- Office2016
- 閱讀權限
- 20
- 性別
- 女
- 註冊時間
- 2012-4-18
- 最後登錄
- 2022-2-7
 
|
2#
發表於 2012-8-30 15:09
| 只看該作者
回復 1# 小俠客
試試!
Excel VBA:
ThisWorkbook貼上- Private Sub Workbook_Open()
- SaveCSV
- AccessModule
- Kill "D:\Sharestemp01\shareNo.csv"
- End Sub
複製代碼 Excel Module:貼上- Sub SaveCSV()
- Dim xml As Object
- Dim stream
- Dim URL As String
- Dim path As String
- path = "D:\Sharestemp01\"
- Set xml = CreateObject("Microsoft.XMLHTTP")
- Set stream = CreateObject("ADODB.stream")
- URL = "http://ichart.finance.yahoo.com/table.csv?s=" & "shareNo" & ".HK&a=09&b=27&c=2001&d=07&e=29&f=2012&g=d&ignore=.csv"
- xml.Open "GET", URL, 0
- xml.send
- With stream
- .Type = 1
- .Open
- .Write xml.responseBody
- If Dir(path & "shareNo" & ".csv") <> "" Then Kill (path & "shareNo" & ".csv")
- .SaveToFile (path & "shareNo" & ".csv")
- .Close
- End With
- Set stream = Nothing
- Set xml = Nothing
- End Sub
- Sub AccessModule()
- Dim A As Object
- Application.DisplayAlerts = False
- Set A = CreateObject("Access.Application")
- A.Visible = False
- A.OpenCurrentDatabase filepath:="D:\Shares\temp.mdb", Exclusive:=False, bstrPassword:=""
- A.Run "InPutData"
- Application.DisplayAlerts = True
- A.CloseCurrentDatabase
- A.Quit
- Set A = Nothing
- End Sub
複製代碼 Temp.mdb 新增Module:貼上- Option Compare Database
- Function InPutData()
- DoCmd.SetWarnings False
- DoCmd.TransferText acImportDelim, "", "Table", "D:\Sharestemp01\shareNo.csv", True, ""
- End Function
複製代碼 |
|
|
|
|
|
|
|