- ベストアンサー
WebBrowser内のフォームをsubmitする(VB2008)
VB2008でWebBrowserコントロール内のsubmitボタンを以下のコードでクリックしようとしているのですが、 WebBrowser1.Document.Forms("フォームの名前").InvokeMember("submit") NullReferenceExceptionはハンドルされませんでした。 オブジェクト参照がオブジェクト インスタンスに設定されていません。 というエラーが出ます。 ボタンがフォームの中ではなく、tableの中に配置されているようで、idも指定されておらず、nameとvalueだけ指定されているのですが何か方法はないでしょうか。 どなたかお願いします。
- みんなの回答 (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") です。
その他の回答 (2)
- fujillin
- ベストアンサー率61% (1594/2576)
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)
VBではなくVBAで確認していますので、違っているかも知れませんが… WebBrowser1.Document.Forms("フォーム名").submit でいけませんか? (フォームをサブミットすれば良いはずなので。VBAではいけました。)
補足
ごめんなさい、「'submit' は 'System.Windows.Forms.HtmlElement' のメンバではありません」のエラーが出て処理できませんでした。
お礼
ありがとうございます。