プロが教える店舗&オフィスのセキュリティ対策術

VBAで objIE を使用して Webページ中の javascript を実行したいのですが、
onclick="~~" の記述がないケースがあり困っております。
例えば以下のような記述です。

<a href="javascript:;" pnb="~~" scdaction="~~" bulkaction="~~" id="~~">~~</a>

onclick の記述がない上記のようなケースでは、javascript の呼び出しはどのようにすればよいのでしょうか?
不可能でしょうか?

A 回答 (1件)

ここを読んでみればよいのですが、だらだらと文章が長いですね。

^^;
http://www.ken3.org/vba/backno/vba170.html
この内容のまとめは、この後でします。もし、ダメだったら、こちらも読んでください。

>onclick="~~" の記述がないケースがあり困っております。

最初に、ストレートな回答ではありませんが、私の場合、いくつかの方法を試しています。

>a href="javascript:;" pnb="~~" scdaction="~~" bulkaction="~~" id="~~">~~</a>
この場合は、id がありますから、確実のオブジェクトとして取得できますから、まず最初に、ダメ元で、
id名.Click を一度試してみます。もしくは、この行の上部のコードのオブジェクトのClass名のオブジェクトのひとつから、ヒットさせようとします。

そこでダメなら、ということで、ken3の内容に入るのですが、この著者の結論(正解)は、

ご質問に沿って書くと
For i =0 To objIE.Document.links.Length -1
If objIE.Document.links(i).href ="javascript:;" Then '文字の比較は、大文字・小文字がある
   objIE.Document.Links(i).Click
End if
Next i

ということになっています。私は、このコードは少し古臭く感じます。

ここで、ken3 の所では、Testサイトを用意してくれているので、試してみましたが、ダイレクトでサイトがとれている限りは、やはり、

Testサイト:http://www.ken3.org/vba/test170f.html

 objIE.Navigate "javascript:xxxxx;"

が利くことが分かりました。ただし、実際は、ここで時間待ちをしなくてはならないでしょう。
解説は、フレームからですので、うまく行かなかったようです。
    • good
    • 3
この回答へのお礼

助かりました

どこのどなたか存じませんが、貴重な時間を割いてご親切にありがとうございます。
結論から言いますと、「id名.Click」の2段階指定でうまくいきました!

初め、目的とする箇所の id名 でいきなりクリックしたところ反応がなく、
教えて頂いた Links(i) のループで id名 を確認したところ、なぜかその id名 が見当たりませんでした。
DOM Explorer では id が見えているのに、VBAでHTMLソースを確認すると id が存在しないため、
すっかり訳が分からなくなってしまいました。
しかし、そのクリックしたい箇所がドロップダウンリストの中の項目だったので、まずドロップダウンリストの id名 をクリックし、
その次に目的とする項目の id名 をクリックしたところ、見事動作しました!

2日もかけて実現できず諦めかけていたのですが、思い切って質問してみて良かったです。
ドロップダウンリストの中の項目だったというのがポイントだったと思うのですが、
頭が鈍くそれに気付かず、質問の際も説明不足で申し訳ありませんでした。
教えて頂いたすべてのことが、問題の解決にとても役立ち、勉強になりました。
本当にありがとうございました。

お礼日時:2015/08/11 21:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A