DOBON.NET DOBON.NETプログラミング掲示板過去ログ

HTMLDocument<一体どこが原因なのでしょうか?

分類:[VB6以前]

あるサイトで見つけた下記のサンプル(htmlからテキストを取り出す)を実行すると、
「実行時エラー '91': オブジェクト変数または With ブロック変数が設定されていません。」
というエラーが出ました。
一体どこが原因なのでしょうか?
よろしくお願い致します。

'「参照設定」で「Microsoft HTML Object Library」にチェックを入れておく。
Private Sub Command1_Click()
'htmlからテキストを取り出す。

Dim a As New HTMLDocument

RichTextBox1.LoadFile "C:\Test.html", rtfText

a.body.innerHTML = RichTextBox1.Text

RichTextBox1.Text = a.documentElement.innerText

End Sub
■No19043に返信(etfさんの記事)
> あるサイトで見つけた下記のサンプル(htmlからテキストを取り出す)を実行すると、
> 「実行時エラー '91': オブジェクト変数または With ブロック変数が設定されていません。」
> というエラーが出ました。
> 一体どこが原因なのでしょうか?

どこで、実行時エラーが発生していますか。
それをもとに式ウォッチで見れば、自己解決しそうですが。
ご回答、ありがとうございます。

> どこで、実行時エラーが発生していますか。
a.body.innerHTML = RichTextBox1.Text
この行でエラーが出ます。

> それをもとに式ウォッチで見れば、自己解決しそうですが。
「a」をウォッチ式に追加してみたら、
「a.body」がNothingとなっていました。
参照のさせ方が間違っているのでしょうか?
ご指導のほど宜しくお願い致します。
■No19051に返信(etfさんの記事)
> 「a」をウォッチ式に追加してみたら、
> 「a.body」がNothingとなっていました。
> 参照のさせ方が間違っているのでしょうか?

a には、

> Dim a As New HTMLDocument

で "新しい" インスタンスが生成されたものが格納されています。
それ以降 a およびそのメンバには、何もしていませんよね。
その状態でいきなり、

> a.body.innerHTML = RichTextBox1.Text

a.body は Nothing でした。
ここまで話の流れを整理してもわからないですか?
どなたか親切な方、どこをどう変えれば動くのか具体的に教えていただけないでしょうか(><)
RichTextBoxを使うあたりがよくわからないのですが,WebBrowserコントロールでNavigateして,DocumentCompleteでWebBrowser.Document.Body.InnerTextで取得できるのでは?
ありがとうございます。

> WebBrowserコントロールでNavigateして,DocumentCompleteで
> WebBrowser.Document.Body.InnerTextで取得できるのでは?
その方法は存じてはいるのですが、WebBrowserコントロールを使わずにHTMLDocumentオブジェクトを使った方法を模索しておりまして。
HTMLDocumentオブジェクトにHTTMLを参照させるにはどういうコードになるのかがわからず途方にくれているところです;;
ご親切にどうもありがとうございました。
下のWebページは参考になりませんか?

http://www.f3.dion.ne.jp/~element/msaccess/AcTipsMSHTML.html

VB2005でmshtmlを参照設定し,同様のコードを試しましたが残念ながら
例外が発生(AccessViolationException)してしまいました。
VB6では試していません。
ありがとうございます。
ご紹介頂いたサイトを参考に下記のようなプログラムを作ってみましたが、
「実行時エラー :'createDocumentFromUrl' メソッドは失敗しました: 'DispHTMLDocument' オブジェクト」
というよなエラーが出ました。
いろいろと調べてみましたが対処法はわかりませんでした。
やはりWebBrowserコントロールを使う方がいいのかもしれません。
どうもありがとうございました。

Private Sub Command1_Click()

Dim oHTML As HTMLDocument
Dim doc As HTMLDocument

Set oHTML = New HTMLDocument

url = "C:\Test.html"

Set doc = oHTML.createDocumentFromUrl(url, vbNullString) ←ここでエラー

RichTextBox1.Text = doc.documentElement.innerText

End Sub
閉めてしまったようですが,追加情報です。
IPersistFileインターフェイスを使えば可能のようです。
試してはいません。

http://homepage1.nifty.com/MADIA/vb/vb_bbs/200401_04010013.html
http://homepage1.nifty.com/MADIA/vb/vb_bbs/200310_03100017.html
> IPersistFileインターフェイスを使えば可能のようです。

こういう方法もあるのですね。
別途ライブラリが必要みたいですが、いろいろ研究してみようと思います。
どうもありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板