返回列表 上一主題 發帖

[發問] 請問這可設定等幾秒沒開網頁或網頁錯誤就執行下一筆嗎,謝謝

[發問] 請問這可設定等幾秒沒開網頁或網頁錯誤就執行下一筆嗎,謝謝

Private Sub GetDividend(ByVal ss As String)
    Dim rr As String

   rr = "http://yamstock.megatime.com.tw/asp/stockinfo/GetReport.asp?select_table=html\Ficxxx\&stockid=2412&" & ss & "&name1=D4&index1=12"     ' 正確的
    工作表2.Select
    Cells.Clear

    Set ie = CreateObject("internetexplorer.application") '使用此方式可以免除 "設定引用項目"

    With ie
        .Visible = False 'True為開啟ie, False為不開啟ie
        .Navigate rr
        Do While .ReadyState <> 4 '等待網頁開啟
        DoEvents
        Loop
        .ExecWB 17, 2 'Select All
        .ExecWB 12, 2 'Copy selection
        
        工作表2.Range("A1").Activate
        
        ActiveSheet.PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:= _
            False, NoHTMLFormatting:=True
    End With

     ie.Quit
   End Sub

Sub AllFile()
Dim i As Integer, v

On Error Resume Next
For i = 2 To 工作表1.Range("A" & 工作表1.Rows.Count).End(xlUp).Row

v = 工作表1.Cells(i, 1).Value

Call GetDividend(v)
工作表1.Cells(i, 9).Value = 工作表2.Cells(34, 8).Value
Debug.Print 工作表1.Cells(i, 1).Value & " " & 工作表1.Cells(i, 2).Value

Next

End Sub

GetDividend.rar (72.65 KB)

joey 大

貼上上面的程式碼,就不執行了,我再試試,謝謝

TOP

程式執行中有些訊息可忽烈,例如

謝謝

2013-09-17_224955.png (9.72 KB)

2013-09-17_224955.png

TOP

本帖最後由 GBKEE 於 2013-9-19 08:26 編輯

網址下錯了,再重上載
Private Sub GetDividend(ByVal ss As String)
    Dim rr As String

   rr = "http://yamstock.megatime.com.tw/asp/stockinfo/GetReport.asp?select_table=html\Ficxxx\&stockid=" & ss & "&name1=D4&index1=12"     ' 正確的
    工作表2.Select
    Cells.Clear

    Set ie = CreateObject("internetexplorer.application") '使用此方式可以免除 "設定引用項目"

    With ie
        .Visible = False 'True為開啟ie, False為不開啟ie
        .Navigate rr
        Do While .ReadyState <> 4 '等待網頁開啟
        DoEvents
        Loop
        .ExecWB 17, 2 'Select All
        .ExecWB 12, 2 'Copy selection
        
        工作表2.Range("A1").Activate
        
        ActiveSheet.PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:= _
            False, NoHTMLFormatting:=True
    End With

     ie.Quit
   End Sub

Sub AllFile()
Dim i As Integer, v

For i = 2 To 工作表1.Range("A" & 工作表1.Rows.Count).End(xlUp).Row



v = 工作表1.Cells(i, 1).Value

Call GetDividend(v)
工作表1.Cells(i, 9).Value = 工作表2.Cells(34, 8).Value: 工作表1.Cells(i, 10).Value = 工作表2.Cells(33, 8).Value
工作表1.Cells(i, 11).Value = 工作表2.Cells(32, 8).Value: 工作表1.Cells(i, 12).Value = 工作表2.Cells(31, 8).Value
工作表1.Cells(i, 13).Value = 工作表2.Cells(30, 8).Value: 工作表1.Cells(i, 14).Value = 工作表2.Cells(29, 8).Value
工作表1.Cells(i, 15).Value = 工作表2.Cells(28, 8).Value: 工作表1.Cells(i, 16).Value = 工作表2.Cells(27, 8).Value

If 工作表2.Cells(34, 8).Value > 0 And 工作表2.Cells(33, 8).Value > 0 And 工作表2.Cells(32, 8).Value > 0 _
And 工作表2.Cells(31, 8).Value > 0 And 工作表2.Cells(30, 8).Value > 0 And 工作表2.Cells(29, 8).Value > 0 _
And 工作表2.Cells(28, 8).Value > 0 And 工作表2.Cells(27, 8).Value > 0 Then
工作表1.Cells(i, 17).Value = 1
Else
工作表1.Cells(i, 17).Value = 0
End If

Next

End Sub

=================
請問 On Error Resume Next
要用在 FOR NEXT 下方
還是 下方

要判斷是否大於0是要用 AND 還是 &
如果有不是數字的例"-"要如何
謝謝

GetDividend.rar (72.15 KB)

TOP

非常謝謝 G大
程式一次跑完,而且都捉的到資料,我要一些時日來吸收消化這些程式^_^
學生希望結合各基本面的資料,把程式作好,多多參考站內的程式,
程式真是一門藝術^0^
謝謝

TOP

回復 7# GBKEE
請問 G 大大
    .Range("E2").CurrentRegion = ""            '清除工作表1,年度範圍
是不是從 E2 開始清除 怎 E1 D2 的 現金股利        股票股利 也刪了
有的資料有時捉不到
請問如何才能確保捉到
謝謝 G 大


Option Explicit
Dim ie As Object   '模組最頂端 Dim 供這模組的程序使用的變數
Sub AllFile()
    Dim i As Integer, v, Y As Integer, S As String
      Set ie = CreateObject("internetexplorer.application")   '使用此方式可以免除 "設定引用項目"
    With ie '縮小IE視窗
        .Visible = True
        .Width = 5
        .Height = 5
    End With
    With 工作表1

'        .Range("E2").CurrentRegion = ""            '清除工作表1,年度範圍
        For i = 2 To .Range("A" & .Rows.Count).End(xlUp).Row
            v = .Cells(i, 1).Value
            GetDividend (v)
            工作表2.Range("D4").CurrentRegion.Replace "--", "", xlWhole

            .Cells(i, 5).Resize(, 2).Value = 工作表2.Cells(4, 4).Resize(, 2).Value
            
        Next
    End With
    With ie  'IE視窗最大化
        Application.WindowState = xlMaximized
        .Height = Application.Height
        .Width = Application.Width
        .Quit
    End With
End Sub
Private Sub GetDividend(ByVal ss As String)

    Dim rr As String, T As Date, i, ii, k, j, S
    On Error Resume Next
    T = Time
    rr = "http://yamstock.megatime.com.tw/asp/stockinfo/GetReport.asp?select_table=html\Ficxxx\&stockid=" & ss & "&name1=D4&index1=12"     ' 正確的
    With ie
        .Navigate rr
        Do While .ReadyState <> 4                          '等待網頁下載完畢
              DoEvents
              If Time >= T + #12:00:03 AM# Then            '等待3秒
                DoEvents
                Application.SendKeys "~"                    '股票代號錯誤,網頁會有訊息,須按確定,才可繼續下面股票代號
                Exit Do
              End If
        Loop
        Set S = .Document.getelementsbytagname("table")(4) ' 新的 table 4

        With 工作表2
            .UsedRange.Clear

            For i = 0 To S.Rows.Length - 1      '寫入資料
                k = k + 1
                For j = 0 To S.Rows(i).Length - 1
                    For ii = 0 To S.Rows(i).Cells.Length - 1
                    .Cells(k, ii + 1) = S.Rows(i).Cells(ii).innertext
                    DoEvents
                    Next
                Next
            Next
        End With
    End With

   End Sub

配息測試.rar (19.29 KB)

TOP

本帖最後由 wufonna 於 2014-9-1 20:00 編輯

回復 10# GBKEE

謝謝 G 大大

再請問 GBKEE  大大
有時網頁捉不到是網頁的問題 可以解決嗎
是改 Application.SendKeys "~" 嗎

還有下面是錯誤是什網頁錯誤嗎
謝謝

2014-09-01_194704.jpg (93.92 KB)

2014-09-01_194704.jpg

2014-09-01_194704.jpg (93.92 KB)

2014-09-01_194704.jpg

2014-09-01_195532.jpg (49.64 KB)

2014-09-01_195532.jpg

TOP

回復 11# wufonna


    請問 G 大大 是
   If Time >= T + #12:00:08 AM# Then        
等代時間少的問題嗎 我將3秒改8秒就沒錯了
如果股票多了如何解決 謝謝

TOP

回復 13# GBKEE

GBKEE 大大
程式沒有錯誤
可是有時資料沒捉到
像這次 勝一 沒捉到
謝謝

2014-09-02_171247.jpg (49.77 KB)

2014-09-02_171247.jpg

配息測試-2.rar (21.67 KB)

TOP

回復 16# GBKEE


    謝謝 G 大大
    程式運行順暢 ^_^
   
本想二維的表單怎會有三個 FOR NEXT
正想發問

再請在 G 大大
新手如何去發現程式中沒有錯誤的變化
像程式中的
Do
        Set S = .Document.getElementsByTagName("table")(4) ' 新的 table 4
        Loop Until Not S Is Nothing
謝謝

TOP

        靜思自在 : 並非有錢魷是快樂,問心無愧心最安。
返回列表 上一主題