人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

VB2010のWebBrowserを使いブラウザを操作したい。

VB2010を使用し、IEを操作するコードを考えています。
操作したいサイトはフレームが使われています。

IEを起動させURLを指定しフォームを指定する
まずは。
objIE_A = CreateObject("InternetExplorer.Application") 'オブジェクトを作成します。
objIE_A.Visible = True '可視、Trueで見えるようにします。
objIE_A.Navigate("https://") 'URLを指定

ボタンをクリックすると。
TextBox1.text = objIE_A.document.frames(2).document.all("hoge").innerTEXT 'データを取得
これでフレーム内のデータが取得できます。

ですが。WebBrowserを使用し、
objIE_A = WebBrowser1
TextBox1.text = objIE_A.document.frames(2).document.all("hoge").innerTEXT 'データを取得
のようにするとエラーがでて動きません。

どのようにすればWebBrowserを使いフレームページのデータを取得できるようになるのでしょうか?

●質問者: lupink
●カテゴリ:コンピュータ インターネット
✍キーワード:.fr ALL application hoge HTTPS
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● ken3memo
●100ポイント

http://d.hatena.ne.jp/ken3memo/20110524/1306190154

イ.オブジェクトの階層が深いので、途中に変数を入れる?

とか?

objIE_A = WebBrowser1

TextBox1.text = objIE_A.document.frames(2).document.all("hoge").innerTEXT 'データを取得

んっ、もしかして、

Set objIE_A = WebBrowser1

のSet じゃないよね・・・

参照が深いので、

Set objIE_A = WebBrowser1.document.frames(2).document

TextBox1.text = objIE_A.all("hoge").innerTEXT 'データを取得

にするとか?

Setが無いのが気になったのと、分割位置を変えてみては・・・の提案でした。

無事に動作することを願いつつ、失礼します。。。。

◎質問者からの返答

回答ありがとうございます。サイトで色々勉強させていただいています。

分割してもうまくいきませんでした。

質問内容を補足しましたのでもしよろしければ解決策を教えて下さい。


2 ● you1031931
●10ポイント

コピーは出来ないんですか?

出来たらそのほうが楽かと思います

◎質問者からの返答

回答ありがとうございます。

具体的にどのようにすればいいのかご存知でしたら回答お願いします。


3 ● a-kuma3
●0ポイント

objIE_A = WebBrowser1

TextBox1.text = objIE_A.document.frames(2).document.all("hoge").innerTEXT 'データを取得

Set が無い、ということは、objIE_A はクラスのメンバーなのかな?

WebBrowser1 は、Form に WebBrowser コントロールを貼りつけている、ということですよね?


CreateObject を使ったときと同様に、Navigate メソッドを呼んであげる必要があります。

Form をロードしたときの関数などで、データを取り出す前に、

Sub Form1_Load
 ...
 WebBrowser1.Navigate("https://...")
 ...
End Sub

としてください。


データを取り出す直前でも、もちろんOKです。

 WebBrowser1.Navigate("https://...")
 TextBox1.text = WebBrowser1.document.frames(2).document.all("hoge").innerTEXT
◎質問者からの返答

回答ありがとうございます。

setが無い クラスのメンバー

というのはよくわからないのですが、使用しているのはVisual Basic2010です。

WebBrowser1.Navigate("https://...")を入れてもうまく動きませんでした。

質問の内容を詳細に書き直しましたので、回答いただければ幸いです。


4 ● a-kuma3
●1000ポイント ベストアンサー

エラーの内容は「公開メンバー 'frames' は型 'HtmlDocument' に見つかりませんでした。」です。


frames を持ってるのは HtmlDocument じゃなくて、HtmlWindow なので、

objIE_A.Document じゃなくて、objIE_A.Document.Window かな。

test = objIE_A.Document.Window  ' ★ここ!
test2 = test.frames(1).Document
TextBox1.Text = test2.all(1).InnerText

後、関係ないと思うけど、プロパティの大文字/小文字も合わせておきたいところ。

frames → Frames

all → All


以下、.NET Framework のリファレンス。

HtmlDocument メンバ

HtmlWindow メンバ


どちらも同じようなことをやってるけど、実は「同じ」ではない。

WebBrowser コントロールは .NET Framework のオブジェクトで、

InternetExplorer.Application は Microsoft Internet Controls のオブジェクトだから、

メンバーが微妙に違う。


# 「同じにしてくれよ!」という気持ちは分かる :-)

◎質問者からの返答

うまくいきました!

かなり悩み苦戦してたのでとてもたすかりました。

ありがとうございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ