• ベストアンサー

WebBrowser内のフォームをsubmitする(VB2008)

VB2008でWebBrowserコントロール内のsubmitボタンを以下のコードでクリックしようとしているのですが、 WebBrowser1.Document.Forms("フォームの名前").InvokeMember("submit") NullReferenceExceptionはハンドルされませんでした。 オブジェクト参照がオブジェクト インスタンスに設定されていません。 というエラーが出ます。 ボタンがフォームの中ではなく、tableの中に配置されているようで、idも指定されておらず、nameとvalueだけ指定されているのですが何か方法はないでしょうか。 どなたかお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.3

IE7以上でVB2008だと、VBA(VB6)の"InternetExplorer.application"オブジェクトが何故か動きません(参照設定しても) VB2008でWebBrowserコントロールオブジェクトを使うときは、今一面倒です。 ご質問のケースでは、<form>タグが無いのですね。このような時は、 <input type"submit" ...>のタグを探してInvokeMember("click")するしかないでしょう。 探し方は、いろいろありますが、一例を挙げると、 WebBrowser1.Document.GetElementsByTagName("input").Count の数だけループして webBrowser1.Document.GetElementsByTagName("input").Item(i).GetAttribute("Type").ToString の値が "submit" の要素を見つけて WebBrowser1.Document.GetElementsByTagName("input").Item(i).InvokeMember("click") です。

news4vip
質問者

お礼

ありがとうございます。

その他の回答 (2)

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

No1です。VBはよく知らないので、あまりお力にはなれそうもないですが… 検索してみたところ、かなり古いですが(VB6なので)以下のようなものがありました。 http://hpcgi1.nifty.com/MADIA/VBBBS/wwwlng.cgi?print+200309/03090009.txt http://hpcgi1.nifty.com/MADIA/VBBBS2/wwwlng.cgi?print+200511/05110018.txt これ(↑)によると、Formをsubmitしてあげるか、INPUT type="submit"を探して、Clickしてあげるかのどちらかだと思うのですが…) 仕様が変わっちゃったんでしょうかね。 >「'submit' は 'System.Windows.Forms.HtmlElement' のメンバでは >ありません」 っていわれちゃうとなると、なんとも… ひょっとして、Formオブジェクトがうまく取得できていないってことはないですよね? 後は、他の方からの回答をお待ちします。

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

VBではなくVBAで確認していますので、違っているかも知れませんが… WebBrowser1.Document.Forms("フォーム名").submit でいけませんか? (フォームをサブミットすれば良いはずなので。VBAではいけました。)

news4vip
質問者

補足

ごめんなさい、「'submit' は 'System.Windows.Forms.HtmlElement' のメンバではありません」のエラーが出て処理できませんでした。