• 締切済み

VBAにてjavascriptを起動したい

VBAにてHPの情報を「With ActiveSheet.QueryTables.Add」で取り込むツールを作成しました。 これまで問題なく利用していたのですが、新しいHPはリンク先をクリックすると、同じURLなのに、ちがう項目が出現する仕組みのため戸惑ってます。 その部分のソースは以下の通りです。 <li><a href="javascript:void(0);" onClick="pagerForm(80,5,null,null)">&lt;&nbsp;前へ</a></li> 上記の対象のリンク先をクリックすると項番80から5つのデータが出現する動きをします。 VBAにて、対象のjavascriptを起動して、同様のページを生成する方法はありますでしょうか? よろしくお願いします。 ExcelVBA(Microsoft Visual Basic for Applications7.0)

みんなの回答

  • kumatti1
  • ベストアンサー率60% (73/121)
回答No.2

IEを制御して一旦、ローカルにHTMLファイルを保存して、そちらに対してWebクエリを適用させればいいのではと。 (IEのNavigateメソッドのjavascriptプロトコルで処理) http://hpcgi1.nifty.com/MADIA/VBBBS/wwwlng.cgi?print+200309/03090020.txt ↓IE制御の入門書 「Excel VBAでIEを思いのままに操作できるプログラミング術 Excel 2013/2010/2007/2003対応」 http://www.impressjapan.jp/books/3384

  • aoyama984
  • ベストアンサー率45% (253/561)
回答No.1

http://note.chiebukuro.yahoo.co.jp/detail/n24833 WebクエリのVBA同等処理 ページ = "http://www.amazon.co.jp/dp/4883376435/" Sheets.Add after:=Sheets(Sheets.Count) Set myIE = CreateObject("InternetExplorer.Application") myIE.Visible = True myIE.Navigate ページ Do Until myIE.busy = False And myIE.readyState = 4: Loop 表示だけなら上記6行でできる リンクをクリックする処理を追加すれば可能なはず ソースを見た限りでは IDやNAMEは付いていないので 他の条件か 何番目か で指定する myIE.document.getElementsByTagName("A")(10).click 上から数えて11番目のAタグをクリックする (0を1とするので 10は11番目) http://homepage1.nifty.com/MADIA/vb/API/Sleep.htm Javascript実行後に表示まで時間があるときは Sleep 1000 '1秒待つ ソースの全文が分からないと正確なものは分からない

fufufuman
質問者

お礼

エスパーな質問ですみませんでした。以下の文で対象のjavascriptが動かすことが出来、自己解決しました。 objIE.Document.Script.setTimeout "javascript:pagerForm(80,5,null,null);

関連するQ&A

  • JavaScriptを埋め込むには?

    こんにちは。よろしくお願いします。 現在、JavaScriptの使用が禁止されているスペースで、HPを作成していますが どうしてもポップアップを使いたいので、JavaScriptの使用が可能なスペースで 画像をクリックするとリンク先にジャンプし、ポップアップが表示されるように作成しました。 そのURLを、JavaScript使用禁止のページの画像に埋め込んだところ 当たり前ですが、JavaScriptが埋め込まれた画像が表示され その画像をクリックしないと、リンク先ジャンプ&ポップアップ表示されません。 JavaScript禁止ページの画像クリック→リンク先ジャンプ&ポップアップとするには どのように作成すれば良いでしょうか? JavaScriptに関して、全くの初心者なもので、分かりづらい説明ですが どうぞ、よろしくお願いいたします。

  • OKwaveの管理をvbaで行なっているのですが

    VBAで最終的に、カテゴリの「214/905/c906.html」を取得したいのですが どういうコードを作ればいいのでしょうか? Sub Sample() Dim mystr As String mystr = "<li><a href=""/c214.html"">ライフ</a>&nbsp;&gt;</li><li><a href=""/214/c905.html"">出産・育児</a>&nbsp;&gt;</li><li><a href=""/214/905/c906.html"">育児</a>&nbsp;</li>""" End Sub 私としては「a href=""」より右をMidかRightで取得しようと思うのですが このカテゴリーだと「a href=""」は3つあり、 一番最後の「a href=""」もしくは 左からではなく、右からみて一番最初の「a href=""」を取得するにはどうすればいいでしょうか? 一番左の「a href=""」なら Sub Sample() Dim mystr As String mystr = "<li><a href=""/c214.html"">ライフ</a>&nbsp;&gt;</li><li><a href=""/214/c905.html"">出産・育児</a>&nbsp;&gt;</li><li><a href=""/214/905/c906.html"">育児</a>&nbsp;</li>""" intStart = InStr(1, mystr, "a href=""") mystr = Mid(mystr, intStart) End Sub なら行けるのですが、一番右を取得する方法、 もしくはもっと効率の良い方法があれば教えてください。

  • リンクに関する制御について【XHTML&CSS&JavaScript】

    【XHTML&CSS】 リンク制御について Webサイトにおいて、現在リンクの制御の方法をどうしたらいいのかわかりません。(JavaScriptについては初心者です。) XHTMLのソース上においてリンクを以下のように記述し、 <ul> <li><a href="../link/test1.html">テスト1</a></li> <li><a href="../link/test2.html">テスト2</a></li> <li><a href="../link/test3.html">テスト3</a></li> <li><a href="../link/test4.html">テスト4</a></li> </ul> 上記のようにリストを作成するが、テスト1からテスト3まではリンク先のファイルが存在するが、テスト4についてはファイルが存在しない。 この状態では、 通常であればテスト4は"404 Not Found「ページが存在しません。」などのエラーが表示されます。 これをCSSまたは、JavaScriptなどで制御して、 リンク先のファイル(test4.html)を探しに行って存在しない場合、 リンク先へ遷移させないようにはするにはどうしたら実現可能でしょうか? よろしくお願いします。

  • javascriptについて

    初心者なのでまったく分かりません。 教えてください。 テキストリンク(1)をクリック→リンク先(1)のWEBページが開く      ↓ テキストリンク(2)が出現 テキストリンク(1)をクリックすることにより、 新しいウインドウでリンク先のページが出るのと同時に テキストリンク(2)を表示させたいのです。 (テキストリンク(2)の出現場所は、  テキストリンク(1)と入れ替え もしくは その下) どなたか教えてください。 よろしくお願いします。

  • VBAからjavascriptに値を渡す

    VBAでIEを操作しております。 一部javascriptを使って以下のようなコードで、リンクをクリックしています。 ie.document.Script.setTimeout "javascript:document.getElementById(""ID"").click()}", 10 getElementById(""ID"")のID部分を変数にしたいのですが、 Dim ID as String ID=○○ ie.document.Script.setTimeout "javascript:document.getElementById(○○).click()}", 10 としてもうまく動きません。 javascriptの中身をfunctionにして、引数に○○を持っていっても動きませんでした。 どうすれば引数を渡すことができますか。 jscriptを使えばできそうな気がしたのですが、 js.CodeObject.関数名(引数)で渡せる引数が1つだけ?のようで こちらも頓挫しております。どうかご教示お願いします。

  • JavaScriptのクッキーによるリダイレクト

    あるホームページを開いて、リンクをクリックした際に、そのリンク先をクッキーに保存して次にそのページを訪れた場合は、そのページを表示しないでそのリンク先へリダイレクトにはどうしたらいいでしょうか? これがソースです。 <html> <body> <ul> <li><a href="​http://www.***.**/ja.html">​日本語ページ</a></li> <li><a href="​http://www.***.**/en.html">​英語ページ</a></li> </ul> <body> </html> リダイレクト先が1つならいいのですが、2回目以降に2つのサイトのどちらかにリダイレクトさせる方法がよくわかりません。何かいい方法はないですか?

  • JavaScriptで折りたたみメニュー

    現在、JavaScriptを利用して折りたたみメニューを作成しました。 2つの項目の下にそれぞれ下層メニューがあり、各項目をクリックするごとに下層メニューが開いたり閉じたりできる状態なのですが、 このどちらかの項目をクリックしたとき、その項目の下層メニューは表示されるが、もう一方の項目の下層メニューは閉じる。というようにするにはどうすればよいでしょうか?(両方の下層メニューが同時に開いている状態が無いように。) よろしくお願いいたします。 【XHTML】 <ul> <li><a href="javascript:exMenu('treeMenu1')">項目1</a> <ul id="treeMenu1" style="display:none"> <li><a href="#">項目1-1</a></li> <li><a href="#">項目1-2</a></li> <li><a href="#">項目1-3</a></li> </ul> </li> <li><a href="javascript:exMenu('treeMenu2')">項目2</a> <ul id="treeMenu2" style="display:none"> <li><a href="#">項目2-1</a></li> <li><a href="#">項目2-2</a></li> <li><a href="#">項目2-3</a></li> </ul> </li> </ul> 【JavaScript】 function exMenu(tName) { tMenu = document.getElementById(tName).style; if (tMenu.display == 'none') tMenu.display = "block"; else tMenu.display = "none"; }

  • javascriptについて

    javascriptに関してまだまだ初心者で困っております. 作成したいプログラムは,画像をクリックすると,クリックした画像だけが"on.gif"になり,それ以外の画像は"off.gif"となるようなプログラムです. そこで以下のようなプログラムを作成したのですが,うまく動きません. ご助言頂ければ幸いです. <html> <head> <script type="text/javascript> <!-- function changeImg(no){ for (i=1; i<3; i++){ document.image[i].src = "off.gif"; if(i==no) document.image[i].src = "on.gif"; } } //--> </script> </head> <body> <ul> <li><a href="JavaScript:changeImg(1)"><img src="on.gif" name="image[1]" /></a></li> <li><a href="JavaScript:changeImg(2)"><img src="off.gif" name="image[2]" /></a></li> </ul> </body> </html>

  • javascriptで、クリックしたらメニューが閉じるようにしたいです

    javascriptで、クリックしたらメニューが閉じるようにしたいです。 one two three ... と 横並びのメニューがあってそこをクリックするとプルダウンでメニューが 出てくるようなものをJavaScriptで作っています。 そこで、その横並びのメニュー・プルダウンで出てきたメニュー以外のところをクリックすると、 メニューが閉じるようにしたいと思っています。 どうやったらそのようにできるでしょうか。 ちなみにhtml, cssの概要は以下のとおりです(one, twoのプルダウンは省略) //html----------- <ul id="menu"> <li>one</li> <li>two</li> <li> three <ul> <li>a</li> <li>b</li> <li>c</li> </ul> </li> </ul> //css---------- #menu li ul{ display: none }

  • JavaScript インクリメントの書き方

    JavaScriptのインクリメントをその都度追加する事がないように for文などで作りたいのですが、上手く動きません。 どの様な書き方をすれば良いかご教授いただきたいです。 よろしくお願いいたします。 =================================== $(document).ready(function(){ $("#navi li#n01 a").click(function () { $("#navi li#n01 ul").slideToggle("slow"); }); }); $(document).ready(function(){ $("#navi li#n02 a").click(function () { $("#navi li#n02 ul").slideToggle("slow"); }); }); $(document).ready(function(){ $("#navi li#n03 a").click(function () { $("#navi li#n03 ul").slideToggle("slow"); }); });

専門家に質問してみよう