標題:
[已解決]如何抓取網頁資料
[打印本頁]
作者:
superrednew
時間:
2011-10-17 17:24
標題:
[已解決]如何抓取網頁資料
本帖最後由 superrednew 於 2011-10-23 19:53 編輯
例如:http://www.trademag.org.tw/ExchangeRate.asp?vdate=2011/10/10 , 最後日期為2011/10/10
假設我要抓取2009/01/01~now 的資料 , 我要如何寫呢
With ActiveSheet.QueryTables.Add(Connection:= "http://www.trademag.org.tw/ExchangeRate.asp?vdate=2011/10/10 " ....要如何改
A3 1 B3=TODAY()
A4 2 B4=DATE(YEAR(B3),MONTH(B3),DAY(B3)-1)
A5 3 B5=DATE(YEAR(B3),MONTH(B3),DAY(B3)-2)
..................................
資料能貼上
[attach]8265[/attach]
作者:
superrednew
時間:
2011-10-17 18:29
我有傳送檔案不知道為何都沒看到我的檔案 , 哪裡出錯了
作者:
oobird
時間:
2011-10-17 19:18
壓縮成rar或zip格式才可上傳。
作者:
superrednew
時間:
2011-10-17 21:27
回復
3#
oobird
我已經壓縮了 , 但似乎我可能選錯吧 還在研究中
作者:
superrednew
時間:
2011-10-17 21:38
本帖最後由 superrednew 於 2011-10-17 21:44 編輯
裡面有我錄製的巨集,但是我希望能寫一個能 自動更新 的excel
range A裡面紀錄著 數目 ---代表有多少筆數據
range B------代表日期
sheet2 我裡面是用web擷取網路資訊 ,再把各個國家的匯率複製,用行列轉換貼到sheet1
sheet2裡面有 程式碼 , 小弟我還是個新手 , 大約看得懂程式碼的意思 , 但完全不會寫....
想請教各位,要如何一次更新這麼多筆數據,但是我又希望這些數據是
從ex 2009/01/01~today 假設這有1000筆數據
過了兩天 就會變成 2009/01/03~today 依然是1000筆數據
作者:
oobird
時間:
2011-10-18 11:17
依你現有代碼,加上循環就行了。
此例取得今年的資料:
Sub Macro1()
d = DateValue("2011/10/17")
i = 3
Do
dt = Application.Text(d, "yyyy/mm/dd")
Set s = Sheet2
s.UsedRange.Clear
With s.QueryTables.Add(Connection:= _
"URL;http://www.trademag.org.tw/ExchangeRate.asp?vdate=" & dt, _
Destination:=s.Range("$A$1"))
.Name = "17"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "2"
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With
With Sheet1
For j = s.[iv3].End(1).Column To 3 Step -1
a = s.Cells(3, j).Resize(41, 1).Value
.Cells(i, 2) = s.Cells(1, j)
.Cells(i, 3).Resize(1, 41) = Application.Transpose(a)
i = i + 1
Next
End With
d = d - 7
Loop Until Year(d) < 2011
End Sub
複製代碼
作者:
superrednew
時間:
2011-10-18 17:19
謝謝oobird 版主 , 收獲很多 , 我研究看看 , 解決我不少問題 , 一般人通長不會這樣用
更新這麼多數據因為會讓excel跑很慢 , 只是我個人想試試看不記錄數據 , 感覺起來如何...
總之很感謝您 ....
作者:
oobird
時間:
2011-10-18 19:54
這只是應你的要求修改你的程式
達到取歷史記錄的目的
其實該程式只要跑一遍,以後就用不到了
以後的只要每個星期更新一次,把目前範往下移,在前幾行寫入新的數據
這又是另一個不同的程式。
不必每次更新都要全程跑一遍的!
作者:
superrednew
時間:
2011-10-19 08:47
回復
8#
oobird
跑過一次,發現日期有遺露,ex2011/10/9 , 2011/10/8 請問問題出在哪呢?
作者:
oobird
時間:
2011-10-19 11:19
網頁你沒看嗎?星期6、日本就沒有資料的。
作者:
superrednew
時間:
2011-10-19 18:01
本帖最後由 superrednew 於 2011-10-19 18:05 編輯
回復
10#
oobird
哈哈 抱歉
對了我可以請問一下
s.UsedRange.Clear 為啥要用clear
For j = s.[iv3].End(1).Column To 3 Step -1 [iv3]是甚麼?
不太懂意思謝謝!!
作者:
oobird
時間:
2011-10-19 20:13
s.UsedRange.Clear
s是sheet2
清空sheet2的使用範圍,以便寫入新的一筆資料呀。
[iv3]是甚麼?
就是儲存格iv3
s.[iv3].End(1).Column To 3 Step -1
表示sheet2從iv3往左的第一個有資料的欄號到3的反向循環
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)