Board logo

標題: [發問] 找不到的網頁如何設定自動跳過,然後執行下一個呢? [打印本頁]

作者: norafang    時間: 2014-2-2 10:37     標題: 找不到的網頁如何設定自動跳過,然後執行下一個呢?

本帖最後由 norafang 於 2014-2-2 10:40 編輯

剛找了一下,相關主題找不到我要的答案,所以想說問看看有沒有大大可以幫忙解決
內容是,我有一個管控表固定去捉一些特定網站的股票資料,但有些網站也許並沒有符合每一檔股票的資料就會產生錯誤
比如我在捉台積電2330也許在yahoo會有公司資料,但台灣50, 0050也許就捉不到了,
遇到這種相關的寫法,又不想因找不到就中斷程式的問題,如何寫一段讓它找不到就跳過去該網站,再進行下一個網站的捉取呢?
因為整個寫法很長,我把我寫的前二個捉取網站貼上,我的0050就停在第二個網址就跑不下去了

x = Worksheets("管控表").Range("a1")
    datetake = Format(Now, "yyyy-m-dd")
    datetake180 = Format(Now - 180, "yyyy-m-dd")
    yeartake = Format(Now, "yyyy")
    yeartakech = Worksheets(Sheets.Count).Range("a43")
    siteshow = "http://money.hinet.net/z/z0/z00/z00a_" & x & "_" & datetake180 & "_" & datetake & "_M.djhtm"
'    MsgBox siteshow
    Worksheets("copy").Copy after:=Worksheets(Sheets.Count)
    With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;http://tw.stock.yahoo.com/q/q?s=" & x, Destination:=Worksheets(Sheets.Count).Range("$AA$1"))
        .Name = "q?s=" & x
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlOverwriteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlSpecifiedTables
        .WebFormatting = xlWebFormattingNone
        .WebTables = "7"
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
    End With
    With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;http://tw.stock.yahoo.com/d/s/company_" & x & ".html", Destination:=Worksheets(Sheets.Count).Range( _
        "$AA$9"))
        .Name = "company_" & x
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlOverwriteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlSpecifiedTables
        .WebFormatting = xlWebFormattingNone
        .WebTables = "9,10,11"
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
    End With
end sub
作者: GBKEE    時間: 2014-2-3 07:43

回復 1# norafang
請詳看VBA說明中的 On Error 陳述式
程序的開始加上
  1. On Error Resume Next   '表示當一個執行階段錯誤產生時,程式控制立刻到發生錯誤陳述式接下去的陳述式,而繼續執行下去
複製代碼

作者: norafang    時間: 2014-2-4 09:19

回復 2# GBKEE

試過,可以用
謝謝G大的回答及解決我困擾的問題,




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