• 締切済み
  • 困ってます

VBScriptでリンクをクリックしても開かない

VBScriptでリンクをクリックし新しいウィンドウで開こうとしているのですが開いてきません。 特にエラーにもならず最後まできれいに終了します。 ちなみに現在のウィンドウで開くリンクの場合はうまく開きます。 メッセージボックスではさんでnameの内容は確認できたのでClickは実行されているはずなのですが・・・何が悪いのでしょうか。 なおクリックしている部分は以下のような記述になっています。 (このリンクは現在のウィンドウなのでうまく開きます) '''http://www.yahoo.co.jp/ For Each objLINK In objIE.Document.Links   If objLINK.InnerText = "ログイン" Then     objLINK.Click     Exit For  End If Next

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数2070
  • ありがとう数3

みんなの回答

  • 回答No.1
  • yambejp
  • ベストアンサー率51% (3827/7415)

ページを読み終わる前にクリックしているのでは? もしくは漢字コードが違っていて「ログイン」というキーワードにマッチしていないとか? 'yahoo_login.vbs function IEBUSY(oIE) Do Until oIE.Busy = False WScript.sleep(250) Loop end function URL="http://www.yahoo.co.jp/" Set WSHShell=Wscript.CreateObject("Wscript.Shell") set oIE=Wscript.CreateObject("InternetExplorer.application") oIE.navigate2(URL) oIE.visible=true IEBUSY(oIE) For Each objLINK In oIE.Document.Links If objLINK.InnerText = "ログイン" Then objLINK.Click Exit For End If Next

共感・感謝の気持ちを伝えよう!

質問者からのお礼

回答ありがとうございます。 などご指摘のようにページを読み終わる前にクリックしていたり、マッチしていなければClickの行は実行されてないことになりますが、Clickの直前にメッセージボックスを入れると表示されるので、実行はされているように思えます。 というか、 新しいウィンドウでのリンクが開かれない状態で、現行のページに読み込むリンクのURLとキーワードにだけ変えて同じプログラムを実行してみると、ちゃんとページが開かれてくるので???になっています。 OSはXP、ブラウザはIE7なのですが、環境の問題でしょうか・・

関連するQ&A

  • リンク名が複数同じ名前あるとき

    リンク名をクリックさせたいのですが、うまくいかないので教えてください。 環境 OS XP VB2005 For Each anchor As HtmlElement In WebBrowser1.Document.Links If anchor.InnerText = "あああ" Then anchor.InvokeMember("click") Exit For End If Next 「あああ」がひとつしかない場合はクリックできるのですが、「あああ」が複数ある場合にうまくいきません。 2つ目の「あああ」クリックさせる方法があれば教えてください。 宜しくお願いいたします。

  • vb2010webページのリンクをクリック

    vb2010でwebページのリンクをクリックしたいのがうまくいきません。 「ホーム」などは選択することができるのですが、「翌月」などが選択できません。コードは以下のようになっています。どなたか教えていただけないでしょうか。 Dim objIE Dim objLINK objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True 'IEウィンドウを表示 objIE.Navigate2("http://www.data.jma.go.jp/obd/stats/etrn/view/daily_s1.php?prec_no=44&prec_ch=%93%8C%8B%9E%93s&block_no=47662&block_ch=%93%8C%8B%9E&year=2000&month=01&day=&view=p1") Do Until objIE.Busy = False Application.DoEvents() Loop For Each objLINK In objIE.Document.Links If objLINK.InnerText = "翌月" Then objLINK.Click() Do Until objIE.Busy = False Application.DoEvents() Loop Exit For End If Next

  • VBAでリンクを踏みたい

    とあるサイトにログインした後に、「このページを印刷する」というリンクをVBAでクリックしたいのですが ソースは <div class="section sideinfo"> <a href="#" class="print" onClick="JavaScript:openPrintWindow('CG017_001', 'CG018'); return false;">このページを印刷する</a> </div> こうなっています。 VBAコードで objIE.Document.all.Item("JavaScript:openPrintWindow('CG017_001', 'CG018')").Click をすると、「オブジェクト変数または With ブロック変数が設定されていません。」になります。 For i = 0 To objIE.Document.Links.Length - 1 'Debug.Print objIE.Document.Links(i).innerHTML If objIE.Document.Links(i).innerHTML = "このページを印刷する" Then objIE.Document.Links(i).Click Exit For End If Next i これで踏むことはできるのですが、 ソースから文字を探してそれをVBAコードにあてて踏むことはできないのでしょうか?

  • VBAにて、セルの内容と一致しない場合の処理

    VBAを独学で学んでいる者です。 実力・知識がないながらも検索エンジンなどを頼りに頑張っています。 しかしながらどうしてもわからない事があり、煮詰まってしまいましたので、質問させていただきました。 当方、VBAにてIEを操作し、セルの内容を自動入力していくプログラムを書いています。 以下に記述しているものや、「document.body.innertext」で取得したIEの情報と書き込みたいセルの内容が一致しない場合にエラーメッセージを表示したいのですが、どうもうまくいきません。 If~Thenなどを使うことで条件分岐できるのだとはおもうのですが、当方の記述ですと条件を無視(?)してElseに飛んでしまいます。 当方が記述している内容は以下です。 (Cells(1, 1)には文字列を入力しています。) ~ここから~ 'リンク情報からオブジェクトを探し.Clickする For n = 0 To objIE.document.Links.Length - 1 'リンク数分まわす Debug.Print objIE.document.Links(n).innertext 'デバックで表示する 'リンク先(.text)をチェックする(文字列比較する) If objIE.document.Links(n).innertext = ActiveSheet.Cells(1, 1).Text Then objIE.document.Links(n).Click '.Clickでクリックしてみた Exit For '見つかったので強制的にループを抜ける Else MsgBox "NG!!", vbExclamation Exit Sub End If Next ~ここまで~ Else MsgBox "NG!!", vbExclamation Exit Sub を消すと、「For n = 0 To objIE.document.Links.Length - 1 」がinnertextを取得し、Cells(1, 1)の内容を読み取りクリックを実行してくれるのですが、Elseを入れると、Cells(1, 1)の内容と一致しているにも関わらず、Elseへ移行し、NGのメッセージボックスが出てきます。 記述が間違っているのでしょうか? 何か他の記述がございますようでしたらご教授願えますでしょうか? 宜しくお願い致します。

  • 2ページ目が表示されるまで待つには?

    target="_blank" で開かれるリンクで、開いた先が完全に表示されるまで待つにはどうすればよいでしょう? 例えば ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Sub Sample() Dim objIE As Object Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True objIE.navigate "http://www.tagindex.com/html_tag/link/a_target.html" 'これは1ページ目を表示させるまで待つ Do Until objIE.Busy = False And objIE.readyState = 4: Loop For i = 0 To objIE.document.Links.Length - 1 If objIE.document.Links(i).innerText = "新しいウィンドウで表示します" Then objIE.document.Links(i).Click 'ここで2ページ目を表示させるまで待つには? Exit For End If Next Set objIE = Nothing End Sub ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ という状態で、 objIE.document.Links(i).Clickを実行した後の表示を待つにはどうすればいいでしょう? (http://www.tagindex.com/html_tag/link/target_example.htmlのページです) objIEの値は、"http://www.tagindex.com/html_tag/link/a_target.html"のままなので、 新しくobjIEを作ればいいのでしょうか? ご回答よろしくお願いします。

  • 三菱東京UFJ銀行に自動ログインしたいのですが

    どうもうまくできません。 ログインボタンが押せません。 Sub tset() Dim objIE As Object Dim i As Long Set objIE = CreateObject("InternetExplorer.Application") objIE.navigate "https://entry11.bk.mufg.jp/ibg/dfw/APLIN/loginib/login?_TRANID=AA000_001" objIE.Visible = True Do While objIE.Busy = True DoEvents Loop With objIE.document .all("KEIYAKU_NO").Value = "test" .all("PASSWORD").Value = "PASSWORD" End With For i = 0 To objIE.document.Links.Length - 1 If objIE.document.Links(i).innerHTML Like "*alt=ログイン*" Then objIE.document.Links(i).Click Exit For End If Next i For i = 0 To objIE.document.Links.Length - 1 If objIE.document.Links(i).innerText = "ログイン" Then objIE.document.Links(i).Click Exit For End If Next i End Sub でも、押せないのですが、ご教授いただけませんか? よろしくお願いします。

  • VBAでIEの操作→サブウインドウを操作するには

    以下の「oya.html」「ko.html」があります。 それを、VBAで「oya.html」を開き、「子ウインドウを開く」リンクをクリックさせて、開いた「ko.html」の「子ウィンドウを閉じる」リンクをクリックさせたいのだがどうすればよろしいでしょうか? ---------VBA ↓--------------------------------------------- Private Sub CommandButton1_Click() Dim objIE As Object 'Object型 'IEのオブジェクトを作る Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True objIE.Navigate "file:///C:/oya.html"'「oya.html」を開く '----表示待ち↓-------- Do While objIE.Busy  DoEvents Loop Do While objIE.document.ReadyState <> "complete" DoEvents Loop '----表示待ち↑---------- For Each linkitem In objIE.document.all.tags("A") 'Aタグ If linkitem.innerText = "子ウインドウを開く" Then linkitem.Click End If Next '----表示待ち↓-------- Do While objIE.Busy DoEvents Loop Do While objIE.document.ReadyState <> "complete" DoEvents Loop '----表示待ち↑----------   For Each linkitem In objIE.document.all.tags("A") 'Aタグ If linkitem.innerText = "子ウィンドウを閉じる" Then linkitem.Click End If Next End Sub ---------------↑------------------------------------------- --------oya.html ↓----------------------------------------- <html> <head><script> function showModal(){ var value = showModalDialog('ko.html'); } </script></head> <TITLE>親ウィンドウ</TITLE> <body> <a href="javascript://" onclick="showModal()">子ウインドウを開く</a><br> </body> </html> -----------------↑----------------------------------------- --------ko.html ↓-------------------------------------------- <html> <TITLE>子ウィンドウ</TITLE> <body> <a href="#" onClick="window.close(); return false;">子ウィンドウを閉じる</a><br> </body> </html> ------------------↑-----------------------------------------

  • name テキスト 画像名等が無いリンクをクリック

    VBで特定のリンクをクリックしたく様々なソースを 見て似たような記述は数多く見かけたのですが、 私のクリックしたいリンクが特殊でどうもうまく クリック出来ません。 ■Visual Studio、Windowsフォームアプリケーション利用 ■クリックしたいリンクについて ・<li class="menu_cate"><a href="new.html" title="NEWページ"></a></li> 「リンク詳細」 リンク先は画像となっており、画像名がありません。 li class、a href それぞれの値(menu_cate、new.html)は、共にページ内では1つだけです。 上記のリンクをクリックしたいので、「menu_cate」、「new.html」、「NEWページ」のいずれかを 検知してクリックをしたいと思い下記を記述してみたのですがうまくいきません。 是非どなたかご教授くださいますようお願い致します。 Dim Element As HtmlElement = Nothing For Each Element In WebBrowser1.Document.All.GetElementsByName("A") If Element.InnerText = "NEWページ" Then Element.InvokeMember("Click") 'クリックする Exit For End If Next ※Element.InnerTextの部分は色々変えてみたのですが、 リンクできませんでした。

  • vbのリンク移動

    vbでweb siteのリンクのリンク名に変数を指定したいのですがうまくきません。どなたか教えていただけないでしょうか? コードは以下のようになっています。 Dim objIE Dim objShell Dim objLINK Dim j As Integer objShell = CreateObject("InternetExplorer.Application") objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True 'IEウィンドウを表示 objIE.Navigate2("http://www.data.jma.go.jp/obd/stats/etrn/index.php?prec_no=46&prec_ch=%90_%93%DE%90%EC%8C%A7&block_no=47670&block_ch=%89%A1%95l&year=2010&month=1&day=&elm=&view=") Do Until objIE.Busy = False Loop For j = 1 To 2 For Each objLINK In objIE.Document.Links If objLINK.InnerText = "2010年 & j & 月の日ごとの値を表示" Then objLINK.Click() Next j

  • 【VBA】IEのリンクを新しいタブで開く

    VBAでIEを制御しリンク(アンカー)<a href="***">を新しいタブで開くようにしたいのですが可能でしょうか? 仮にグーグルのトップページ(http://www.google.co.jp/)の『検索オプション』(http://www.google.co.jp/advanced_search?hl=ja)を新しいタブで開くとします 実際に開きたいリンクのURLは固定ではないためURLの指定では開けませんが、飛びたいリンクの文言(『検索オプション』)は固定です リンクに飛ぶ前に飛ぶ先のURLを取得する仕方か、Shift+Ctrl+クリックのようにリンクを新しいタブで開く方法を教えてください 一度普通にリンクに飛んでからURLを取得し、戻ってから新しいタブで開くぐらいしかできないのでしょうか? Sub 新しいタブで開く() Dim objIE As Object Dim objShell Dim URL As String Set objShell = CreateObject("Shell.Application") For n = objShell.Windows.Count To 1 Step -1 Set objIE = objShell.Windows(n - 1) If Right(UCase(objIE.FullName), 12) = "IEXPLORE.EXE" Then objIE.Navigate "http://www.google.co.jp/" Exit For End If Next Set objShell = Nothing objIE.Visible = True Do While objIE.Busy = True Or objIE.ReadyState <> 4 DoEvents Loop For Each Obj In objIE.Document.getElementsByTagName("a") If Obj.innerText = "検索オプション" Then Obj.Click Do While objIE.Busy = True Or objIE.ReadyState <> 4 DoEvents Loop URL = objIE.Document.URL objIE.GoBack Do While objIE.Busy = True Or objIE.ReadyState <> 4 DoEvents Loop objIE.Navigate URL, CLng(&H800) Exit For End If Next End Sub よろしくお願いいたします