返回列表 上一主題 發帖

請教有關ADODB.STREAM和Microsoft.XMLHTTP的用法

回復 5# 小俠客
你已有積分44分  版規: 檔案附件限等級中學生(積分50)以上才能下載
加油 加油!

TOP

回復 3# GBKEE


    謝版大,可是我權限不夠,不能下載呢
另外,可以介紹Stream的用法嗎?好像不易理解.....

TOP

回復 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(因為我會抓數百間公司資料)。

TOP

回復 1# 小俠客
試試看

test.rar (224.78 KB)

TOP

回復 1# 小俠客

試試!
Excel VBA:
ThisWorkbook貼上
  1. Private Sub Workbook_Open()
  2.     SaveCSV
  3.     AccessModule
  4.     Kill "D:\Sharestemp01\shareNo.csv"
  5. End Sub
複製代碼
Excel Module:貼上
  1. Sub SaveCSV()
  2. Dim xml As Object
  3. Dim stream
  4. Dim URL As String
  5. Dim path As String
  6. path = "D:\Sharestemp01\"

  7. Set xml = CreateObject("Microsoft.XMLHTTP")
  8. Set stream = CreateObject("ADODB.stream")
  9.     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"
  10.         xml.Open "GET", URL, 0
  11.         xml.send
  12.     With stream
  13.         .Type = 1
  14.         .Open
  15.         .Write xml.responseBody
  16.         If Dir(path & "shareNo" & ".csv") <> "" Then Kill (path & "shareNo" & ".csv")
  17.         .SaveToFile (path & "shareNo" & ".csv")
  18.         .Close
  19.     End With
  20. Set stream = Nothing
  21. Set xml = Nothing
  22. End Sub

  23. Sub AccessModule()
  24. Dim A As Object
  25. Application.DisplayAlerts = False
  26. Set A = CreateObject("Access.Application")
  27.         A.Visible = False
  28.         A.OpenCurrentDatabase filepath:="D:\Shares\temp.mdb", Exclusive:=False, bstrPassword:=""
  29.         A.Run "InPutData"
  30.     Application.DisplayAlerts = True
  31.     A.CloseCurrentDatabase
  32.     A.Quit
  33. Set A = Nothing
  34. End Sub
複製代碼
Temp.mdb 新增Module:貼上
  1. Option Compare Database

  2. Function InPutData()
  3.     DoCmd.SetWarnings False
  4.     DoCmd.TransferText acImportDelim, "", "Table", "D:\Sharestemp01\shareNo.csv", True, ""
  5. End Function
複製代碼

TOP

        靜思自在 : 要用心,不要操心、煩心。
返回列表 上一主題