[[20190611213052]] 『起動済み画面のHTMLの表を取得する』(けんすけ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『起動済み画面のHTMLの表を取得する』(けんすけ)

起動済み画面のHTMLの表を取得するVBAがエラーになります。エラー箇所(For Each tbl In objie.Document.getElementsByTagName("table"))。エラーの理由と改善策についてどなたか教えてください。

Dim sh As Object
Dim win As Object
Dim objie As Object
Dim tbl As Object
Dim cel As Object
Dim x As Integer
Dim y As Integer
Dim snam As String
Set sh = CreateObject("shell.application")

Worksheets.Add
snam = ActiveSheet.Name
Set objie = CreateObject("internetExplorer.application")
objie.Visible = True
For Each win In sh.Windows
For Each tbl In objie.Document.getElementsByTagName("table")
If tbl.ID = "list" Then
For y = 0 To tbl.Rows.Length - 1
For x = 0 To tbl.Rows(y).Cells.Length - 1
Worksheets(snam).Cells(y + 1, x + 1).Value = tbl.Rows(y).Cells(x).innerText
Next
Next
End If
Next
Set objie = Nothing
Next

< 使用 Excel:Excel2010、使用 OS:Windows7 >


 参考にしたコード、またはそのWEBサイトのURLを貼って貰えませんか?

 そこで示された通りに書かないのが「理由」になると思います。

(半平太) 2019/06/11(火) 22:37


まず1点。 CreateObject("Shell.Application").Windows って、IEだけじゃなく、エクスプローラも抽出してませんか? エクスプローラは全部閉じるか、win.Name = "Internet Explorer" なものだけ使ってみてください。 しかしながら、shでループしてますが、肝心のwinは全く使っていない無意味ループ? つまり、IEとエクスプローラを開いた数だけ、同じ処理を繰り返す? 何を目的としているのかさっぱり判らないのですが。

次に、開いたURLは実はフレーム分割指示をしているだけで、実体のTABLE部分を持っていなかったりしませんか? URLを公開できないなら、ご自身でHTMLを解析するしかないですよ?(formが何個あるか調べる、とか、個々のouterHTMLを抜き出してみるとか)
(???) 2019/06/12(水) 09:48


ん?、無意味ループの最後で、Set objie = Nothing してますね? なのに2周目でそれを使おうとしている? エラー原因はその辺りっぽいですが、根本的にループが変なので、よく考え直してみてください。
(???) 2019/06/12(水) 09:51

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.