標題:
[發問]
判斷功能表按鈕而執行程式碼問題
[打印本頁]
作者:
reangame
時間:
2014-5-14 23:21
標題:
網頁抓取資料疑問
本帖最後由 reangame 於 2014-5-14 23:23 編輯
請教各位大大,下方程式碼是以錄製方式出來的,可是該網頁有可以日期查詢,我試著用錄製方式去抓程式碼,可是卻抓不到選完日期後查詢的程式碼,怎麼匯入都是當日資料,請問如何指定日期查詢後匯入Excel?
[a1].Select
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://www.twse.com.tw/ch/trading/exchange/BWIBBU/BWIBBU_d.php#", _
Destination:=Range("A1"))
.name = "BWIBBU_d"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = False
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingAll
.WebTables = "8"
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With
複製代碼
順便附上我的半成品檔案
作者:
reangame
時間:
2014-5-14 23:30
另外附帶一問,請看我的半成品,裡面有個【開啟月份股票網頁】,原意是想自動下載月份資料並匯入Excel,因小弟功力還不夠,只能以替代方式開啟網頁後手動下載,再以【匯入月份股票資料】方式匯入,可否指導如何自動下載後匯入Excel之方式?
作者:
joey0415
時間:
2014-5-16 10:23
Sub tt()
[a1].Select
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://www.twse.com.tw/ch/trading/exchange/BWIBBU/BWIBBU_d.php#", Destination:=Range("A1"))
.PostText = "input_date=
103
%2F
05
%2F
13
&select2=ALL&order=STKNO&login_btn=%ACd%B8%DF"
.WebTables = "8"
.Refresh BackgroundQuery:=False
.Delete
End With
End Sub
作者:
reangame
時間:
2014-5-16 21:46
本帖最後由 reangame 於 2014-5-16 21:48 編輯
joey0415 大大,測試過了,可以執行,但拜託指導一下
.PostText = "input_date=103%2F05%2F13&select2=ALL&order=STKNO&login_btn=%ACd%B8%DF"
==>這是甚麼意思?
.WebTables = "8"
==>這是甚麼意思?
.Refresh BackgroundQuery:=False
==>這是甚麼意思?
.Delete
==>為什麼要?
作者:
reangame
時間:
2014-5-16 21:51
另外請看我的半成品,裡面有個功能【開啟月份股票網頁】,原意是想自動下載月份資料並匯入Excel,目前只能以替代方式開啟網頁後手動下載,再以【匯入月份股票資料】方式匯入,可否指導如何在不打開IE情況下,自動下載後匯入Excel之方式?
作者:
reangame
時間:
2014-5-21 12:58
標題:
判斷功能表按鈕而執行程式碼問題
[attach]18323[/attach]
說明:上圖為【系統功能表】點選【選擇股票收盤行情】show【選擇收盤日期_股票收盤】:1,點選確定執行抓取股票收盤行情。
點選【選擇股票比例資料】show【選擇收盤日期_比例資料】:2,點選確定執行抓取股票比例資料。
點選【選擇三大法人資料】show【選擇收盤日期_三大法人】:3,點選確定執行抓取三大法人資料。
請問有辦法做出如下圖的概念嗎? 只需要一個表單就好了,
判斷【系統功能表】點了哪個按鈕,show【選擇收盤日期】:1,點選確定執行對應的程式碼?
因為如果這樣下去只要新增功能就必須再做一個表單(4.5.6.....),太不自動化了,希望有高手可以指導一下。
我在【網頁抓取資料疑問】這文章中有放檔案,連結如後:
網頁抓取資料疑問
如果可以也請指導一下,非常感謝您!
作者:
joey0415
時間:
2014-5-21 20:59
回復
1#
reangame
一、要抓資料前先查詢自己的資料庫,每個資料庫最後更新日期
二、抓取最後更新日與今日間的差距離
三、抓取未更新日期進資料庫
四、如果抓取網頁有問題就跳過,如果資料不符如沒資料就跳過…
這樣就自動化了,不用這樣設計
作者:
reangame
時間:
2014-5-21 23:47
回復
2#
joey0415
joey0415大大:
您的意思是點選1.2.3功能後,直接比對資料庫跟網頁的資料是否同一天,如果不是就抓取更新,是這樣嗎?
如果是這樣的話,就不太符合我想要的功能,我主要是想抓取選定的日期然後分別去查詢網頁資料,
點選1.2.3功能所選定的日期有可能不是同一天的資料,所以才會這樣設計,還請再指導,感恩!
作者:
stillfish00
時間:
2014-5-22 14:23
回復
1#
reangame
選擇收盤日期表單的程式碼可新增加一個全域變數,儲存是來自哪個按鈕。
如【選擇收盤日期】程式碼上方加上:
Public Enum enumClickOption
optDefault
opt選擇股票收盤行情
opt選擇股票比例資料
opt選擇三大法人資料
End Enum
Public fromOption As enumClickOption
複製代碼
點選【選擇股票收盤行情】, show之前加上一行
Private Sub CommandButton1_Click()
Unload Me
選擇收盤日期.fromOption =opt選擇股票收盤行情
選擇收盤日期.Show
End Sub
複製代碼
其他按鈕依此類推
最後【選擇收盤日期】確定時,再判斷該變數決定執行哪個行為
作者:
reangame
時間:
2014-5-24 15:49
回復
9#
stillfish00
stillfish00 大大:
非常抱歉,這兩天比較忙沒空上來,沒想到一上來就看到您的回覆,對我幫助非常大,
一開始測試一個多小時,就是有地方執行不了,一度想要再上來請求您的協助,
後來發現原來您回復的程式碼:
Public Enum enumClickOption
optDefault
opt選擇股票收盤行情
opt選擇股票比例資料==>選擇股
價
比例資料
opt選擇三大法人資料
End Enum
Public fromOption As enumClickOption
跟我的程式碼差了一個字,差點就要放棄了,還好有耐心的測試,
把字修正後,卻不知道要執行的程式碼要擺在哪裡 @@....
又開始測試,最後終於想出來,
在【選擇收盤日期】表單的確定鈕,裡面的程式碼鍵入:
Private Sub CommandButton1_Click()
Select Case fromOption
Case 1
程式碼1
Case 2
程式碼2
Case 3
程式碼3
End Sub
複製代碼
終於可以執行了,以後就可以省略很多同樣的表單了,
真心感謝您的指導!!!!!
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)