返回列表 上一主題 發帖

[發問] 如何用vba匯入web資料

本帖最後由 沙拉油 於 2011-1-21 23:40 編輯

不保證回傳資料的完整性
  1. Sub webqyt()
  2.     Dim qyt As QueryTable
  3.     Dim sh As Worksheet
  4.     Dim i As Integer
  5.     Dim para As String
  6.     Dim paras As Variant
  7.     Dim rng As Range
  8.    
  9.     paras = Array("股票代號", "開始日期(西元)", "結束日期(西元)")
  10.     Application.ScreenUpdating = False
  11.     Set sh = Sheets.Add
  12.     '建立WEB查詢
  13.     Set qyt = sh.QueryTables.Add(Connection:= _
  14.         "FINDER;http://oilonline.myweb.hinet.net/m.iqy", _
  15.         Destination:=Range("A1"))
  16.     '設定參數 1 to 3
  17.     For i = 1 To 3
  18.         para = InputBox("請輸入要查詢的" & paras(i - 1), "查詢參數 " & i & "/3")
  19.         Select Case i
  20.         Case 1: If Not IsNumeric(para) Then GoTo ERROUT
  21.         Case 2: If Not IsDate(para) Then GoTo ERROUT
  22.         Case 3: If Not IsDate(para) Then GoTo ERROUT
  23.         End Select
  24.         qyt.Parameters(i).SetParam xlConstant, IIf(i > 1, Format(para, "yyyy-m-d"), para)
  25.     Next
  26.     Sheet1.Cells.Clear
  27.     i = 1
  28.     '開始查詢
  29.     Do
  30.         qyt.Parameters(4).SetParam xlConstant, i
  31.         qyt.Refresh False
  32.         With qyt.ResultRange
  33.             If .Rows.Count > 4 Then
  34.                 Set rng = Range("A" & IIf(i = 1, 1, 3)).Resize(.Rows.Count - IIf(i = 1, 2, 4), .Columns.Count)
  35.                 rng.Copy Sheet1.Range("A65536").End(xlUp).Offset(IIf(i = 1, 0, 1), 0)
  36.             End If
  37.         End With
  38.         Set rng = Cells.Find(what:="下一頁", LookIn:=xlValues, Lookat:=xlPart)
  39.         i = i + 1
  40.     Loop While Not rng Is Nothing
  41.     Application.DisplayAlerts = False
  42.     sh.Delete
  43.     Application.DisplayAlerts = True
  44.     Application.ScreenUpdating = True
  45.     Exit Sub
  46. ERROUT:
  47.     Application.DisplayAlerts = False
  48.     sh.Delete
  49.     Application.DisplayAlerts = True
  50.     Application.ScreenUpdating = True
  51.     MsgBox "你提供的資料明顯不正確,不查了∼"
  52. End Sub
複製代碼
多看看程式碼的意義,不要只是複製回去能用就算了,
下次同樣的問題就不答了∼
一卵三四、驚到嘸代誌

TOP

本帖最後由 沙拉油 於 2011-2-4 18:44 編輯
一、一樓樓主提出的網頁匯入的網址為:
http://money.hinet.net/z/z0/z00/z00a_2311_2010-1-1_2011-1-16_D.djhtm
但版主的語法上是引用http://oilonline.myweb.hinet.net/m.iqy
而小弟將一樓樓主想匯入的網頁觀看其原始檔內並未查詢出版主引用的網址資料。
這也是小弟一直感到困擾的地方。
二、小弟想請沙拉油兄能否指點應如何學習excel 與 web 相關知識呢?


問題一
難得有人看到我作弊,你可以點選這個網址 http://oilonline.myweb.hinet.net/m.iqy 看看裡面是什麼嗎?

問題二
該說的都說完了,看看底下兩個連結吧!
http://blog.xuite.net/saladoil/excel/38430175
http://blog.xuite.net/saladoil/excel/38751663
一卵三四、驚到嘸代誌

TOP

        靜思自在 : 君子如水,隨方就圓,無處不自在。
返回列表 上一主題