返回列表 上一主題 發帖

[發問] 取出網頁資料會出現指定年月不合

[發問] 取出網頁資料會出現指定年月不合

各位大大好:
   
  小弟正在學習如何取得網頁資料。
也引用GBKEE版主大大的語法,並
依指定網頁來取出資料,但出現實際
指定取出的年月卻不合。請問各位大大
小弟應如何修改下列語法呢?

謝謝各位大大!

Sub Ex()

    Dim i As Integer, s As Integer, k As Integer, A, ii, j
    Dim STK_NO As String     '股票代碼 INPUT
    Dim myear As String    '年度 SELECT
    Dim mmon As String     '月份 SELECT
    STK_NO = "2330"
    myear = "102"
    mmon = "5"
   
    With CreateObject("InternetExplorer.Application")
        .Visible = True
        .navigate "http://www.twse.com.tw/ch/trading/exchange/STOCK_DAY/STOCK_DAYMAIN.php"
        Do While .Busy Or .ReadyState <> 4: DoEvents: Loop
        With .document
            For Each A In .getelementsbytagname("INPUT")
                If A.Name = "STK_NO" Then A.Value = STK_NO
            Next
            For Each A In .getelementsbytagname("SELECT")  '己經指定年份,但實際並取得指定年份
                If A.Name = "myear" Then
                    A.Value = True
                        A.Focus
                        Application.Wait Now + #12:00:02 AM#
                        Application.SendKeys "{DOWN}"
                        Application.Wait Now + #12:00:02 AM#
                        Application.SendKeys "{ENTER}"
                        Exit For
                End If
            Next
            
            For Each A In .getelementsbytagname("SELECT")  '己經指定月份,但實際並取得指定月份
                If A.Name = "mmon" Then
                    A.Value = True
                    Application.Wait Now + #12:00:02 AM#
                    Application.SendKeys "{DOWN}"
                    Application.Wait Now + #12:00:02 AM#
                    Application.SendKeys "{ENTER}"
                    Exit For
                 End If
            Next
                    
            For Each A In .getelementsbytagname("INPUT")
                If Trim(A.Value) = "查詢" And A.Name = "login_btn" Then A.Click        '
            Next
        End With
        Application.Wait Now + #12:00:10 AM#
        Set A = .document.getelementsbytagname("table")
        On Error Resume Next
        With ActiveSheet
            .Cells.Clear
            For ii = 1 To A.Length - 1
                For i = 0 To A(ii).Rows.Length - 1      '寫入資料
                k = k + 1
                    For j = 0 To 8
                        Cells(k, j + 1) = A(ii).Rows(i).Cells(j).innerText
                    Next
                Next
            Next
           
        End With
        .Quit        '關閉網頁
    End With
End Sub

謝謝各位大大!

回復 2# GBKEE


  版主大大您好:


謝謝您的指點。
小弟對此語法仍有許多疑惑
尚請版主大大明示

Set A = .document.getelementsbytagname("table")
表示設定A物件來取得返回带有指定TABLE標籤名的對象集合。
而語法中有使用到
A(6) 及 A(7)
小弟一直無法悟出其函意為何呢?

TOP

回復 4# GBKEE


    謝謝版主
小弟已完全了解。

感恩大大!

TOP

        靜思自在 : 能付出愛心就是福,能消除煩惱就是慧。
返回列表 上一主題