InternetExplorer.application操作 .Clickでクリックしたいと思っています。下記のサイトを参考にしています。

http://www.ken3.org/vba/backno/vba097.html

テキストボックスに値を入れてボタンをクリックすると、なんらかのアクションをするというものです。
objIE.document.all.btn01.Click 'クリックメソッドを実行
これによりボタン押す動作ができるというのはわかりました。

私がやりたいのは下記のようなボタンをクリックしたいです。
<button onClick=javascript:return opw('abc.aspx?thisisit=abcde& formname=FrmEvent','xyz','500','500','no')">ここ</button>
ボタンをクリックしたらフォームが別で起動してきます。ただ、javascriptでデータを渡しているようです。このようなボタンをプログラムからさせたいときはどうやったらよいでしょうか?

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2010/02/14 00:23:27
  • 終了:2010/02/21 00:25:02

回答(1件)

id:ken3memo No.1

ken3memo回答回数241ベストアンサー獲得回数742010/02/14 06:04:06

ポイント60pt

サンプルプログラム

http://www.ken3.org/vba/backno/vba097.html

その人三流で情報のまとめ方がなっていないですよね

今回押したいボタンには nameとかidが付いていないんですよね。

>>||

<button onClick=javascript:return opw('abc.aspx?thisisit=abcde& formname=FrmEvent','xyz','500','500','no')">ここ</button>

<<

ターゲットのタグは button ですよね。

その人が書いた(ぉぃぉぃ) 例ですが、

formの外側で定義されているボタンをクリックする

http://ken3-info.blog.ocn.ne.jp/objie/2007/08/form_5760.html

.Document.all.tags(tagName:="a")

↑これで、Aタグを取り出しているので、これを button に変えて、探したオブジェクトをクリックするとか?

次は、オブジェクトの探し方ですよね。

その三流な人が書いた(ぉぃぉぃ)サンプルを探すと

QA 05/02 Submitでうまくいかないことがあります

http://ken3-info.blog.ocn.ne.jp/objie/2009/05/qa_0502_submit_.ht...

↑これもは INPUTのタグを集めて、.Value を条件に探していますが、

button の場合は、.InnerTEXT で ここ を探してみては?

例えば、

http://ken3-info.blog.ocn.ne.jp/objie/2010/02/20100214_aa7c.html

>>||

<SCRIPT language="javaScript"> </p> <p> function IE_JUMP(s){</p> <p> location.href=location.href='<a href="http://'+s;" target="_blank">http://'+s;</a></p> <p> }</p> <p></SCRIPT>

フォームの外のボタンを押すテスト


<button onclick="IE_JUMP('www.ken3.org')">三流君Topへ</button>

<button onclick="IE_JUMP('www.ken3.org/vba/')">VBA解説</button>

<button onclick="IE_JUMP('www.ken3.org/asp/')">ASP</button>


<<

の場合、

Sub ie_Tags_Button()  'ボタンにName=が無しなので、.tagsでButtonを抜き .InnerTEXTで判断

    Dim objIE      As Object  'IEオブジェクト参照用

    'IEを起動する
    Set objIE = CreateObject("InternetExplorer.application") 'IEのオブジェクトを作る
    objIE.Visible = True '見えるようにする(お約束)

    '.Navigate で 指定したURLを開く
    objIE.Navigate "http://ken3-info.blog.ocn.ne.jp/objie/2010/02/20100214_aa7c.html"

    'ページが表示される 完了を待つ
    While objIE.ReadyState <> 4  'READYSTATE_COMPLETE = 4
        While objIE.Busy = True
            DoEvents  '特に何もしないで.Busyの状態が変わるまで待つ
        Wend
    Wend
    
    '↓デバック用で少し待つ(※これは通常いらないです)
    Application.Wait Time:=Now + TimeValue("00:00:03")  '画面遷移がはやいので3秒間止める
    
    'htmlドキュメント allのから .tagsでButtonタグを抜き
    '.InnerTEXT値(ボタンの名称) が VBA解説 の オブジェクト を クリック(.Click)する
    Dim objButton As Object   'Buttonタグ格納用

    For Each objButton In objIE.Document.all.tags("Button")  'Buttonのタグを.allから抜く
        If objButton.InnerTEXT = "VBA解説" Then '.InnerTEXT値(ボタンの名称) で判断する
            objButton.Click  '見つけたButtonオブジェクト(ボタン)を.Clickクリックする
            Exit For  '用が済んだので(見つかったので)ループを抜ける
        End If
    Next
    
    '↑上でボタンが見つからなかった時のエラー処理が入っていない手抜きだけど、ご勘弁を
    
End Sub
<<

こんな感じで、.tags("Button")でタグを集め
ループの中で、
.InnerTEXTで比較、見つかったら.Click で いけるのかなぁ。

何かの参考となれば、幸いです。
※三流な人のページが探しやすく・見やすくなるといいんだけど、と思いつつ願いつつ、(ホントカヨ)失礼します。
id:akaired

おぉ、ケン様ではないですか。いつもサイト参考にさせて頂いております。詳しい解説ありがとうございました。感謝感謝です!

2010/02/14 11:07:51

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません