返回列表 上一主題 發帖

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

回復 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

回復 4# 小俠客

[參考]
順序可改成:
下載CSV → 經過VBA整理加入代號 → 匯入Access。

至於下載後,依含有【代號】之檔案名稱給該檔新增一個【代號欄位】,這方面你可另外詢問先進,尋求解決方案;這部份我還沒學到。
∼ ^___^ ∼吐舌傻笑!

TOP

        靜思自在 : 人事的艱難與琢磨,就是一種考驗。
返回列表 上一主題