0

こんにちは、Web サイトからテーブル全体を Excel 文字列にインポートしています。

Dim fST As String
fST = Doc.getElementsByTagName("table")(0).innerText

その後、Excelセル内でテーブルを分割し<td>、htmlテーブルのタグを使用して分割を行うか、少なくともこれが実行できると思われるオプションであるため、インポートされたテーブルはExcel内で同じになりますインポートされると、すべての値が個々のセル内に表示されます。

教えてください。

これが私が使用しているコンデ全体です:

Private Sub Worksheet_Change(ByVal Target As Range)

 If Target.Row = Range("URL").Row And _
 Target.Column = Range("URL").Column Then
    Dim IE As New InternetExplorer
    IE.Visible = True
    IE.navigate Application.ActiveSheet.Range("URL")
    Do
        DoEvents
        Loop Until IE.readyState = READYSTATE_COMPLETE
    Dim Doc As HTMLDocument
    Set Doc = IE.document

    Dim tbl, trs, tr, tds, td, r, c

    Set tbl = Doc.getElementsByTagName("table")(0)
    Set trs = tbl.getElementsByTagName("tr")

    For r = 1 To trs.Count
        Set tds = trs(r).getElementsByTagName("td")
        For c = 1 To tds.Count
            ActiveSheet.Cells(r, c).Value = tds(c).innerText
        Next c
    Next r
    IE.Quit
 End If
End Sub

しかし、エラーが表示されます: オブジェクトは、次の行でこのプロパティまたはメソッドをサポートしていません: For r = 1 To trs.Count

4

2 に答える 2

6

編集:テスト済みの例

Sub Tester()

Dim IE As Object
Dim tbls, tbl, trs, tr, tds, td, r, c

Set IE = CreateObject("internetexplorer.application")

IE.navigate "http://www.w3schools.com/html/html_tables.asp"

Application.Wait Now + TimeSerial(0, 0, 4)

    Set tbls = IE.Document.getElementsByTagName("table")
    For r = 0 To tbls.Length - 1
        Debug.Print r, tbls(r).Rows.Length 
    Next r

    Set tbl = IE.Document.getElementsByTagName("table")(5)
    Set trs = tbl.getElementsByTagName("tr")

    For r = 0 To trs.Length - 1
        Set tds = trs(r).getElementsByTagName("td")
        'if no <td> then look for <th>
        If tds.Length = 0 Then Set tds = trs(r).getElementsByTagName("th")

        For c = 0 To tds.Length - 1
            ActiveSheet.Range("B4").Offset(r, c).Value = tds(c).innerText
        Next c
    Next r

End Sub
于 2013-06-13T22:28:42.653 に答える
2

私もこの質問に対する答えを探しました。実際にマクロを記録していた同僚と話をすることで、最終的に解決策を見つけました。

皆さんは自分がこれを上回っていると思っていますが、実際にはこれが最善の方法です。ここで完全な投稿を参照してください: http://automatic-office.com/?p=344 手短に言えば、マクロを記録してデータに移動する必要があります --> Web から Web サイトに移動し、必要なテーブルを選択します。それを入れるセルをExcelに教えてください。

私は過去に上記のソリューション「id で要素を取得する」タイプのものを使用しましたが、いくつかの要素には最適ですが、テーブル全体が必要で、経験があまりない場合は、マクロを記録してください。友達に教えてから、自分の作品のように再フォーマットして、マクロ ツールを使用したことを誰も知らないようにしないでください ;)

于 2013-10-09T15:17:44.673 に答える