Board logo

標題: [發問] 使用WEB查詢更新資料時,跳出來的錯誤, [打印本頁]

作者: icestormer    時間: 2013-7-7 19:04     標題: 使用WEB查詢更新資料時,跳出來的錯誤,



如上圖 我在使用WEB查詢更新 因網站(或其它我不知什麼原因) 有時會一直跳出來如上圖的訊息 我得手動按enter或點確定

不知能不能使用 事件程序 或其它方法 在跳出訊息時,自動按下enter,不然只要我沒去按 更新就會暫停,直到我接下enter

感謝 幫忙了 這問題弄好久都弄不出來 而且不是每次更新都一定會出現訊息 有時完全沒有 有時郤多到我想直接關了不要更新了。。
作者: GBKEE    時間: 2013-7-7 19:11

回復 1# icestormer
請附上檔案看看
作者: icestormer    時間: 2013-7-8 08:45

回復 2# GBKEE

對不起 不是不想附上檔案但 檔案太大了有23MB,而且我昨天還讓它跑一次更新 只要它一跳出訊息 我就記錄一下(股票的代碼)有3X組

結果怎著?  我再用那些代碼去更新(手動輸入代碼去更新) 郤沒有一個再跳出訊息..事情就那麼奇怪 ..

請問  活頁簿事件 都沒法處理這種問題嗎??

題外話:跟我之前問過一個問題為什麼我用VBA寫的小程式進行COPY工作表為什麼老是到了3X頁後就會死當 這問題我也到處問人 困惱了我1 ,2年了..正當我要死心了,一個朋友PO出一個EXCEL官方(記得是)問答, 原來 問題出在 要COPY的工作表跟我目前打開的EXCEL是同一個地方 只要把 要被COPY的表 放去別地方 就算COPY到一千張也不會死當(只是會慢的超慢)
作者: GBKEE    時間: 2013-7-8 09:04

回復 3# icestormer
至少也要有程式碼,才好了解問題.
作者: icestormer    時間: 2013-7-8 12:12

本帖最後由 icestormer 於 2013-7-8 12:17 編輯

回復 4# GBKEE



不過 他的更新 是自動的 我打開excel檔 就問我要不要更新 如上圖

另外我說手動更新也只是單純 輸入股號 設定只要所在格 數字 就跟者更新 這部份也完全我沒有去寫任何一點程式碼 如下圖


所以應跟程式碼沒關係?(因不是用程式碼來跑更新的,是用WEB查詢自動下載資料) 還是我理解有誤呢?
作者: GBKEE    時間: 2013-7-13 17:29

回復 5# icestormer
這部份也完全我沒有去寫任何一點程式碼


如圖讓他不在自動詢問

    [attach]15413[/attach]
作者: icestormer    時間: 2013-7-17 08:39

回復 6# GBKEE


   謝 但問題並不是在那裡, 那是一開始打開EXCEL時 問我要不要更新(這部份沒有問題,我可以選要或不要)

問題是在更新時 他會因網站問題(下午3點過後 情況會好很多)出現 網站沒有回應之類的 如果我不手動按下 〔確定〕,整個程序就停在那 後頭都不會更新

我也不是想要讓它不會出現問題 我只是想要讓問題出現時 由VBA事件程序之類的自動按下確定就行了

感謝你花時間回覆我∼
作者: stillfish00    時間: 2013-7-17 09:25

本帖最後由 stillfish00 於 2013-7-17 09:30 編輯

回復 7# icestormer
檔案太大可以把多餘資料刪除再上傳吧,不然自己試試用 Application.DisplayAlerts 能不能解決。
作者: icestormer    時間: 2013-7-17 09:37

本帖最後由 icestormer 於 2013-7-17 09:38 編輯

回復 8# stillfish00


Application.DisplayAlerts
如果我沒有記錯 這個指令是用在要關檔案之類的會先詢問你 設它為真就不要問了 不是? 那個也跟網站沒有回應應沒關係吧?

至於。。檔案太大 他也不是每次都會出問題 不然 如果純因檔案太大不是應會〔每次〕都會出錯?
像這幾天更新郤一點錯誤也沒有跳出來呢。

另外 那不是上傳呢, 是利用WEB查詢下載資料
作者: stillfish00    時間: 2013-7-17 09:52

本帖最後由 stillfish00 於 2013-7-17 09:55 編輯

回復 9# icestormer
我的意思是上傳你的檔案到論壇,若太大可以先刪除資料。

若displayalerts無效(試過了嗎),
也可以試試看改用VBA去refresh web query,用on error resume next 使發生error時忽略它看看。
都試看看才知哪種可以解決吧,當然也可能解決不了...

DisplayAlerts用在存檔自動覆蓋是一種用法,Web Query 我不確定有沒有效才會要你試看看。
  1. Application.DisplayAlerts 屬性
  2. 如果執行巨集時,Microsoft Excel 會顯示特定的提醒及訊息,則本屬性值為 True。可讀寫的 Boolean。
  3. 語法

  4. 運算式.DisplayAlerts

  5. 運算式   代表 Application 物件的變數。

  6. 備註


  7. 預設值為 True。如果要在巨集執行時隱藏提示和警告訊息,就將本屬性設定為 False;當出現需要使用者回應的訊息時,Microsoft Excel 會選擇預設回應。

  8. 如果您將此屬性設定為 False,除非您正在執行跨處理序程式碼,否則 Microsoft Excel 會在程式碼結束時將此屬性設定為 True。
複製代碼

作者: icestormer    時間: 2013-7-19 06:04

回復 10# stillfish00


   試看看
不管如何都感謝你發言回覆^^
作者: jak    時間: 2013-7-25 10:22

會不會跟網路品質有關(本身網速、或是該網站當時無法回應...)
作者: cji3cj6xu6    時間: 2013-7-25 17:16

icestormer 大,
你的問題我有遇過,基本上你應該也是使用iqy去抓取資料的對吧!
當網路下載順利應該就不會出現此現象,
而該網站繁忙時就有可能會出現。
我之前想抓20組資料,分別放在20張sheet裡,
可是我一次就將20組的代號更換掉,
可能因此偶爾會發生此一現象。
當發生時,假設其中一組,我更改其代號但它依舊會發生。
不會發生錯誤的sheet,發生的機率只有一成。

建議你,採用vba來下載資料,每頁sheet之間,
相隔1∼5秒(確認下載完成),抓取資料應該還蠻順暢的。
作者: joey0415    時間: 2013-8-1 17:34

用VBA來抓才是正確的

例如網站忙時,你要設定一個程式例如十秒,或是那個網頁出現例如:無此資料…語句,就跳到下一檔股票,並將跳過的股票代碼,寫進LOG檔中,這樣更新就不會有問題,也會知道是哪一檔哦!

這種事以前我有也過,後來自己寫就沒有問題
作者: 7777    時間: 2013-12-28 00:03

回復 6# GBKEE

能否 請問大大....
     
     如何可以不要出現 [查詢更新]

如圖[attach]17140[/attach]



附檔[attach]17141[/attach]
作者: GBKEE    時間: 2013-12-28 18:45

本帖最後由 GBKEE 於 2013-12-28 18:52 編輯

回復 15# 7777

    [attach]17146[/attach]

你的Web匯入參數有誤
  1. Option Explicit
  2. Sub Ex() '修改你的Web參數
  3. Dim URL, DCym, DCymd, Eymd '
  4. DCym = "[" & """ym """ & "," & """" & Format(Date, "yyyymm") & """" & "]"        '西元年月
  5. DCymd = "[" & """ymd """ & "," & """" & Format(Date, "yyyymmdd") & """" & "]"     '西元年月日
  6. Eymd = "[" & """Eymd""" & "," & """" & Format(Date, "E/mm/dd") & """" & "]"       '民國年/月/日
  7. URL = "URL;http://www.twse.com.tw/ch/trading/exchange/MI_INDEX/genpage/Report" & DCym & "/A112" & DCymd & "ALLBUT0999_1.php?select2=ALLBUT0999&chk_date=" & Eymd
  8.     With Sheet1.QueryTables(1)
  9.         .Connection = URL
  10.         .WebSelectionType = xlSpecifiedTables
  11.         .WebFormatting = xlWebFormattingNone
  12.         .WebTables = "10"
  13.         .WebPreFormattedTextToColumns = True
  14.         .WebConsecutiveDelimitersAsOne = True
  15.         .WebSingleBlockTextImport = False
  16.         .WebDisableDateRecognition = False
  17.         .WebDisableRedirections = False
  18.         .Refresh BackgroundQuery:=False
  19.     End With
  20. End Sub
複製代碼

作者: 7777    時間: 2013-12-28 20:55

回復 16# GBKEE

感謝大大
Web的參數沒有錯
因為
台灣交易所的資料,沒有 (2012/12/28) 所有會有誤
加上交易所 13:30 收盤後,約13:50 才會匯整好資料
以致於 本人希望是 更改為[手動的方式]來進行
所以重點是 .... [T2] 要是 台灣交易所 有開盤的時間日期才可以抓資料
因為沒有錯,所以就改回,謝謝大大

    Option Explicit
    Sub Ex() '修改你的Web參數
    Dim URL, DCym, DCymd, Eymd '
    DCym = [T4]        '西元年月
    DCymd = [T3]       '西元年月日
    Eymd = [T5]        '民國年/月/日
    URL = "URL;http://www.twse.com.tw/ch/trading/exchange/MI_INDEX/genpage/Report" & DCym & "/A112" & DCymd & "ALLBUT0999_1.php?select2=ALLBUT0999&chk_date=" & Eymd
        With Sheet1.QueryTables(1)
            .Connection = URL
            .WebSelectionType = xlSpecifiedTables
            .WebFormatting = xlWebFormattingNone
            .WebTables = "10"
            .WebPreFormattedTextToColumns = True
            .WebConsecutiveDelimitersAsOne = True
            .WebSingleBlockTextImport = False
            .WebDisableDateRecognition = False
            .WebDisableRedirections = False
            .Refresh BackgroundQuery:=False
        End With
    End Sub
作者: GBKEE    時間: 2013-12-29 14:25

回復 17# 7777
這是你附檔Web的網址
'www.twse.com.tw/ch/trading/exchange/MI_INDEX/genpage/Report["股價年月","股價年月"]/A112["股價年月日","股價年月日"]ALLBUT0999_1.php?select2=ALLBUT0999&chk_date=29991231 這裡錯誤
作者: 7777    時間: 2013-12-29 17:11

回復 18# GBKEE

感謝大大 時事求事~ 認真的面對每一個問題

沒錯 Web的網址 第3個時間是,取非常非常未來的日期

    DCym = [T4]        '西元年月
    DCymd = [T3]       '西元年月日
    Eymd = [T5]        '民國年/月/日

因為 第1,2 是要取所要的時間資訊 (所以 會是變數)

第3個時間的條件,似乎是要
限制有效的資訊:在最後的時間日期內 (所以 取一個非常遠的常數也可以)

大大的做法,是最正確的方法

感謝大大




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