0

HTML テーブルの行の右端のセルの内部テキストのみを抽出しようとしています。これは、HTML コードの小さなセクションです。行には 810 個のセルが含まれ、TR タグには 811 個の TD タグが含まれています。

</tr><tr align="center" id="spt_inner_row_2"><td nowrap="nowrap" bgcolor="#EEEEEE" style="border-bottom: 1px solid white; border-right: 1px solid white">
&nbsp;300 - 305&nbsp;
</td><td nowrap="nowrap" bgcolor="#EEEEEE" style="border-bottom: 1px solid white; border-right: 1px solid white">
&nbsp;300 - 305&nbsp;
</td><td nowrap="nowrap" bgcolor="#EEEEEE" style="border-bottom: 1px solid white; border-right: 1px solid white">
&nbsp;300 - 305&nbsp;
</td><td nowrap="nowrap" bgcolor="#EEEEEE" style="border-bottom: 1px solid white; border-right: 1px solid white">
&nbsp;300 - 305&nbsp;

現在使用しているコードは、各セルからデータを正常に抽出し、アクティブ シートの列 A に貼り付けます。

Sub GetData()

    Dim URL As String
    Dim IE As InternetExplorer
    Dim HTMLdoc As HTMLDocument
    Dim TDelements As IHTMLElementCollection
    Dim TDelement As HTMLTableCell
    Dim r As Long

    'For login use
    Dim LoginForm As HTMLFormElement
    Dim UserNameInputBox As HTMLInputElement
    Dim PasswordInputBox As HTMLInputElement

    URL = "https://www.whatever.com"

    Set IE = New InternetExplorer

    With IE
        .navigate URL
        .Visible = True

        'Wait for page to load
        While .Busy Or .readyState <> READYSTATE_COMPLETE: DoEvents: Wend

        Set HTMLdoc = .document

            'Enter login info
            Set LoginForm = HTMLdoc.forms(0)

            'Username
            Set UserNameInputBox = LoginForm.elements("username")
            UserNameInputBox.Value = "username"

            'Password
            Set PasswordInputBox = LoginForm.elements("password")
            PasswordInputBox.Value = "password"

            'Get the form input button and click it

            Set SignInButton = LoginForm.elements("doLogin")
            SignInButton.Click

            'Wait for the new page to load

            Do While IE.readyState <> READYSTATE_COMPLETE Or IE.Busy: DoEvents: Loop

        'Auto-navigate to start page, so we need to navigate once more

        .navigate URL

        Do While IE.readyState <> READYSTATE_COMPLETE Or IE.Busy: DoEvents: Loop

        End With


    'Specify how to recognize data to extract
    Set TDelements = HTMLdoc.getElementById("spt_inner_row_2").getElementsByTagName("TD")


    r = 0

    For Each TDelement In TDelements

        ActiveSheet.Range("A1").Offset(r, 0).Value = TDelement.innerText

        r = r + 1

    Next

End Sub

私が本当に必要としているのは、HTML テーブルの行の最後の (一番右の) セルだけを抽出することです。助言がありますか?

4

1 に答える 1

0

IHTMLElementCollectionlengthプロパティとプロパティがありitemます。プロパティはitem数値インデックスを取ることができますが、ゼロベースであるため、最後のエントリはlength - 1

Dim TDelements As IHTMLElementCollection

Set TDelements = HTMLdoc.getElementById("spt_inner_row_2").getElementsByTagName("TD")

With TDelements
    MsgBox .Item(.Length - 1).InnerText
End With
于 2013-07-18T02:55:21.437 に答える