返回列表 上一主題 發帖

[發問] 擷取上櫃股價行情~遇到非交易日即跳出錯誤訊息!

[發問] 擷取上櫃股價行情~遇到非交易日即跳出錯誤訊息!

各位大大:

再次請教...
我抓上櫃連續多日的收盤行情時,
遇到假日(非交易日)時,vba都會出現以下訊息~~執行階段錯誤'1004'-無法開啟連結...
2012-04-19_234657.jpg
2012-4-19 23:53


該網頁(上櫃每日收盤行情有關的原始碼如下

連結原始碼

2012-04-19_234856.jpg
2012-4-19 23:54


請問該怎麼修改以下的vba代碼,
使其可以先判定當日有沒有交易資料,再進行資料擷取/或跳至下一個交易日 ???

(抓上市收盤價時就算遇到假日也不會出現此一問題,但抓上櫃收盤價時,則會有錯誤訊息...)

感謝!!!
  1. '上櫃個股歷史資料
  2.    With ActiveSheet.QueryTables.Add(Connection:="URL;http://www.otc.org.tw/ch/stock/aftertrading/otc_quotes_no1430/SQUOTE_AL_" & myear & mmon & nowday & ".html" _
  3.         , Destination:=ActiveCell.Offset(2, 0))
  4.    
  5.      
  6.         .FieldNames = True
  7.         .RowNumbers = False
  8.         .FillAdjacentFormulas = True
  9.         .PreserveFormatting = True
  10.         .RefreshOnFileOpen = False
  11.         .BackgroundQuery = True
  12.         .RefreshStyle = xlInsertDeleteCells
  13.         .SavePassword = False
  14.         .SaveData = False
  15.         .AdjustColumnWidth = True
  16.         .RefreshPeriod = 0
  17.         .WebSelectionType = xlSpecifiedTables
  18.         .WebFormatting = xlWebFormattingNone
  19.         .WebTables = "1,2,3"
  20.         .WebPreFormattedTextToColumns = True
  21.         .WebConsecutiveDelimitersAsOne = True
  22.         .WebSingleBlockTextImport = False
  23.         .WebDisableDateRecognition = False
  24.         .WebDisableRedirections = False
  25.         .Refresh BackgroundQuery:=False
  26.     End With
  27.    
複製代碼
新手上路

回復 1# cudui


錯誤訊息都在~程式run到 .refresh BackgroundQuery:=False 時出現error(執行階段錯誤1004)
新手上路

TOP

http://www.otc.org.tw/ch/stock/aftertrading/otc_quotes_no1430/SQUOTE_AL_1010419.CSV
你又抓到沒有資料的網頁了....


這網頁我確定是可以run得到資料下來的~~
交易日沒有問題,但是非交易時無data時才會出錯~


   你的問題很籠統...沒法完整回答......如果是一個可正確run的vba,也要先說明你的個邏輯...
    最簡單的方法是將整年的交易日期計劃拿到,比對欲抓取的日期目標,依判定變更report的html.....


交易日每年都不同,所以用比對的方法,會比較麻煩~
我的問題可能還不夠明確,
希望得到的解答是:如何在該vba內,添加判斷式---判斷若遇到"查詢失敗"或"查無資料"時,可以 goto NEXT one,繼續未完的查詢,而非跳出....
(因為不知道當 html無資料可擷取時,會回饋什麼樣的訊號...)
新手上路

TOP

回復 7# GBKEE
  1. If Err.Number <> 0 Then Err.Clear: MsgBox "資料查詢失敗"
複製代碼
請問G大, 該行可以改成下列寫法嗎?
If Err.Number <> 0 Then
GOTO ABC123
END IF
....

ABC123:
Next J ....



謝謝!!
新手上路

TOP

''上櫃個股歷史資料
   With ActiveSheet.QueryTables.Add(Connection:="URL;http://www.otc.org.tw/ch/st ...
chen_cook 發表於 2012-4-20 07:14


謝謝大大了,
我再試試CSV & Html執行有什麼差別~~
新手上路

TOP

以G大的概念延伸..

在出問題的那一列之前,增加:
"On Error Resume Next"

就能跳過錯誤訊息了!!
新手上路

TOP

回復 5# chen_cook

謝謝COOK大,
我以你的語法改寫就可以用了!!
新手上路

TOP

本帖最後由 cudui 於 2012-4-22 14:12 編輯

再請問一下~~

我原先抓的是html的資料,可以不需再處理CSV檔匯入的問題,
(Connection:="URL;http://www.otc.org.tw/ch/stock/aftertrading/otc_quotes_no1430/SQUOTE_AL_" & myear & mmon & nowday & ".html" _

但是,使用html遇到的狀況是~
我擷取其他交易日的時候都沒問題,但一旦要匯入"2/10","4/10"...等n月 10日的交易資料時,
個股行情除檔名外,其餘就會是一片空白...(但n月20日.30日都沒問題,所以應該不是"0"的問題)
而我檢查實際連結也都正確,可以正確連結到該網頁
(http://www.otc.org.tw/ch/stock/aftertrading/otc_quotes_no1430/SQUOTE_AL_1010410.html)
而使用CSV則無此問題~~

有沒有大大可以幫忙解惑一下這到底是因為什麼????
謝謝!

附上原始碼如下:


  1. '上櫃個股歷史資料
  2.    With ActiveSheet.QueryTables.Add(Connection:="URL;http://www.otc.org.tw/ch/stock/aftertrading/otc_quotes_no1430/SQUOTE_AL_" & myear & mmon & nowday & ".html" _
  3.         , Destination:=ActiveCell.Offset(2, 0))
  4.    
  5.         .FieldNames = True
  6.         .RowNumbers = False
  7.         .FillAdjacentFormulas = True
  8.         .PreserveFormatting = True
  9.         .RefreshOnFileOpen = False
  10.         .BackgroundQuery = True
  11.         .RefreshStyle = xlInsertDeleteCells
  12.         .SavePassword = False
  13.         .SaveData = False
  14.         .AdjustColumnWidth = True
  15.         .RefreshPeriod = 0
  16.         .WebSelectionType = xlSpecifiedTables
  17.         .WebFormatting = xlWebFormattingNone
  18.         .WebTables = "1,2,3,4"
  19.         .WebPreFormattedTextToColumns = True
  20.         .WebConsecutiveDelimitersAsOne = True
  21.         .WebSingleBlockTextImport = False
  22.         .WebDisableDateRecognition = False
  23.         .WebDisableRedirections = False
  24.         On Error Resume Next
  25.         .Refresh BackgroundQuery:=False
  26.       
  27.     End With
複製代碼
新手上路

TOP

回復  cudui
[在出問題的那一列之前,增加: "On Error Resume Next"]
在那程序中 預計會發生錯誤的程式碼 ...
GBKEE 發表於 2012-4-22 15:23


G大:

我用 [A1]="URL;http://www.otc.org.tw/ch/stock/aftertrading/otc_quotes_no1430/SQUOTE_AL_" & myear & mmon & nowday & ".html" 去看,
得出來的連結仍是http://www.otc.org.tw/ch/stock/aftertrading/otc_quotes_no1430/SQUOTE_AL_1010410.html沒錯,
而且,
如果真是二位數的問題的話,
不應該N月的20日 / 30日都可以抓到資料,
但10日則抓不出來...

另外,我在之前也有加入判斷式~ N<9則前面加"0",
並加寫  nowday = Left(nowday & "0", 2)...
可是結果都一樣~~
新手上路

TOP

回復  cudui
應是這網頁的問題 幫你看了一下 3/1 ,3/2, 4/10  都無法匯入
可改用  Workbooks.Open ("ht ...
GBKEE 發表於 2012-4-22 17:14



謝謝G大!
我有改用CSV確定沒有問題,
只是不懂為何用"HTML"才會出現此一狀況....好奇是程式哪裡沒寫好而已...
新手上路

TOP

        靜思自在 : 難行能行,難捨能捨,難為能為,才能昇華自我的人格。
返回列表 上一主題