Board logo

標題: [發問] 如何用vba匯入web資料 [打印本頁]

作者: skystone    時間: 2011-1-16 09:27     標題: 如何用vba匯入web資料

本帖最後由 skystone 於 2011-1-17 00:33 編輯

我要在sheet1中的a3 顯示

http://money.hinet.net/z/z0/z00/z00a_2311_2010-1-1_2011-1-16_D.djhtm

中的歷史股價

請問大大們,我可以怎麼做?

(ps.剛接觸vba不久,可以請大大們說仔細一點? ^^)
作者: 沙拉油    時間: 2011-1-21 23:28

本帖最後由 沙拉油 於 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
複製代碼
多看看程式碼的意義,不要只是複製回去能用就算了,
下次同樣的問題就不答了∼
作者: dechiuan999    時間: 2011-2-2 09:15

小弟對沙拉油超級版主的作品
一直深感興趣,也都納入收集珍藏。
此次,看到一樓的樓主提出的問題
也是小弟深感興趣。只可惜一樓樓主
並未繼續提出探討、研究,讓小弟仍然停留
原地,還是不得其門而入。
小弟有二問題想請敎:
一、一樓樓主提出的網頁匯入的網址為:
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 相關知識呢?

小弟在此同時向各位版主大大拜年
並恭祝各位新年愉快,萬事如意。
作者: 沙拉油    時間: 2011-2-4 18:42

本帖最後由 沙拉油 於 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
作者: dechiuan999    時間: 2011-2-5 08:33

首先小弟在此祝福各位版主大大
新年行大運、心想事成、好運年年來。

沙拉油版主大大,感謝你春節期間
還讓你辛苦回覆小弟的提問。

小弟重覆多次拜讀大大的作品,
心裡有一種感覺好像是有點懂;
又好像還不是很懂。

目前這些作品小弟都已收入珍藏。
只能說是精彩至極,毫無冷場。
也期望所有網友都有此福氣能學到。

小弟想再請版主大大能對此網頁
解惑去除小弟心中的一塊大石頭。
問題一、
小弟想對台彩引用大大的模式仍有
瓶頸。小弟想取出台彩的大樂透並
選取及指定年、月時不知如何修正呢?

首先小弟有看出其屬於POST
<form name="form1" method="post" action="history.aspx" id="form1">
但是還須要設定三個參數不知要如何修正呢?
語法如下:
WEB
1
http://www.taiwanlottery.com.tw/Lotto/Lotto649/history.aspx
__EVENTTARGET=["選擇月份","請輸入要查詢的大樂透月份代號"]

Selection=8
Formatting=None
PreFormattedTextToColumns=True
ConsecutiveDelimitersAsOne=True
SingleBlockTextImport=False
DisableDateRecognition=False
DisableRedirections=False

問題二、
在執行匯入的資料其中文會出現亂碼
的情形,不知要如何改正呢?

感恩大大!
作者: smart3135    時間: 2014-4-22 00:39

回復 4# 沙拉油
呼!花了一段時間看了沙拉油大大的文章 雖然看得不是很懂 有些介面也不太一樣 就是在最後[資料>>匯入外部資料>>匯入資料] 這裡 因為我的EXCEL是2007的 和2003不一樣
2007的介面是[資料>>從Access或從Web或從文字檔或從其他來源]但都無法指定到剛剛下載下來的iqy檔 不知道該怎麼匯入 懇請大大指點  感謝大大!




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)