vbsを利用して特定サイトの操作を自動化する方法

このQ&Aのポイント
  • vbsを利用して特定サイトの操作を自動化する方法について教えてください。
  • vbsを使用して特定のウェブサイトの自動操作をしたいと考えていますが、タブの操作がうまくいきません。
  • HTMLのタグ名を使用してタブを操作していますが、反応しないようです。どのようにすればタブを切り替えることができるでしょうか?
回答を見る
  • ベストアンサー

vbsを利用して、特定サイトの操作を自動化したいと

vbsを利用して、特定サイトの操作を自動化したいと思い作成しています。 ある程度はできてきたのですが、ページ内のタブを操作する動作がうまくいきません。 HTMLはよくわかっていないのですが、NAMEは設定されていないのでTITLEで該当リンクは取得できているようなのですが、CLICKを指定してもタブが切り替わりません。 CLICKでは反応しないのでしょうか? 参考までにソースを記載します。 for each a in IEオブジェクト.document.all.tags("li") if a.title = "タブ" then a.click exit for end if next 動かすためにはどうしたらよいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • unacyo
  • ベストアンサー率51% (35/68)
回答No.1

外れていたらごめんなさい、ですが、LIタグにonclickイベントは設定されていますか? やり方がちょっと違うのですが、当方で試しに<li onclick="alert("test1");">とやってみても、マウスクリックで反応しませんでしたので、LIにonclickって設定できるのかな、と疑問が…。 もしかして、LIタグの中にAタグが入っていて、それでアクションを起こすみたいな仕組みになっていませんか?

関連するQ&A

  • 二つのタブを開き、二つ目のタブに対して、操作し

    vbaのie操作で 一つ目はタブはグーグルメール 二つ目のタブはドコモメールを開きたいのですが、 ドコモメールはPWをVBAで入れないと進めないので入れたいのですが Sub test() Dim myObj As Object Dim objIE As InternetExplorer Set objIE = CreateObject("InternetExplorer.Application") With objIE .Visible = True .Navigate "https://mail.google.com/mail/u/0/?pli=1#inbox" ’グーグル End With objIE.Navigate2 "https://mail.smt.docomo.ne.jp/mail/#fid=10000000&page=1", 2048 ’ドコモ For Each myObj In objIE.document.all.tags("input") If myObj.ID = "persistent" Then myObj.Value = "PW" Exit For End If Next Set objIE = Nothing End Sub だと、 For Each myObj In objIE.document.all.tags("input") は、グーグルメールを参照しています。 LocationURLを見てみたら、 "https://mail.google.com/mail/u/0/#inbox" になっていました。 このように、二つのタブを開き、二つ目のタブに対して、操作したい場合 どうすればいいでしょうか?

  • objIE.Navigate2 "http://.

    win8.1 エクセル2010です。 1ページ目でyahooのソースをチェックし、 2ページ目でグーグルのソースをチェックするにはどうすればいいでしょうか? **************************************************************** Option Explicit Dim objIE As InternetExplorer Sub test() Dim myObj As Object Set objIE = CreateObject("InternetExplorer.Application") With objIE .Visible = True .navigate "http://www.htmllint.net/html-lint/htmllint.html" End With Call wait For Each myObj In objIE.document.all.tags("input") If myObj.Name = "URL" Then myObj.Value = "http://www.yahoo.co.jp/" Exit For End If Next For Each myObj In objIE.document.all.tags("input") If myObj.alt = "CHECK" Then myObj.Click Exit For End If Next Call wait '表示が終わってないのに次のコードに進んでるっぽい objIE.Navigate2 "http://www.htmllint.net/html-lint/htmllint.html", 2048 For Each myObj In objIE.document.all.tags("input") If myObj.Name = "URL" Then myObj.Value = "https://www.google.co.jp/" Exit For End If Next For Each myObj In objIE.document.all.tags("input") If myObj.alt = "CHECK" Then myObj.Click Exit For End If Next End Sub Sub wait() Do While objIE.Busy = True DoEvents Loop Do While objIE.readyState <> 4 DoEvents Loop End Sub **************************************************************** というコードを作ったのですが、 1ページ目のタブで、ヤフーのコードをチェックし、 2ページ目のタブで http://www.htmllint.net/html-lint/htmllint.html は表示できたのですが、 2ページ目のタブのボックスに myObj.Value = "https://www.google.co.jp/" を入れることができません。 しかし 上記のコードを実行してもエラーにはなりません。 2回目の For Each myObj In objIE.document.all.tags("input")は 何をループしているのかよくわかりません。 objIE.Navigate2 "http://www.htmllint.net/html-lint/htmllint.html", 2048 で開いた二つ目のタブで For Each myObj In objIE.document.all.tags("input") If myObj.Name = "URL" Then myObj.Value = "https://www.google.co.jp/" Exit For End If Next をやる方法を教えてください。

  • VBAでIEで開いたダイアログのオブジェクトの操作

    VBAでIE(Edge)上のWebページのエディットボックスやボタンを操作するには、 ie(COMオブジェクト)を取得して、 For Each obj In ie.document.getElementsByTagName("input")  If obj.ID = "txtDenpyoNo" Then   obj.Value = d_no   Exit For  End If Next For Each obj In ie.document.getElementsByTagName("input")  If obj.ID = "btnSearch" Then   obj.Click   Exit For  End If Next というような感じで、 エディットボックスに値を入れたり取得したり ボタンをクリックしたりする仕方は分かりましたが、 サイト上のボタンをクリックすると、 別のウインドウやダイアログが表示されることがあります。 このような場合、HTMLコードがないため、 上記の方法では記述することができません。 新しいウインドウやダイアログのタイトルから、 IDは取得することはできましたが、この取得したIDで、 ウインドウやダイアログをアクティブにするには、 どのように記述すればよいのでしょうか。 また、ウインドウやダイアログ上のオブジェクトの 指定の仕方がよく分からないのですが、 ウインドウやダイアログ上のオブジェクトを操作するには、 どのように記述をすればよいのでしょうか。 よろしくお願いします。(Windows10,IE,Edge)

  • VBAで起動しているIEの操作

    IEでOKWAVEを開いていたら イミディエイトウィンドウに タイトルを表示するのに 次の 記述をしましたが エラーになりました。 実行時エラー '-2147467259 (80004005)': 'Document' メソッドは失敗しました: 'IWebBrowser2' オブジェクト なぜでしょうか? IEは11です。 エクセルは2013 OSは windows7 ホームプレミアム vbsは次の通り Sub okwave() Dim colSh As Object Dim win As Object Dim strTemp As String Dim objIE As Object Set colSh = CreateObject("Shell.Application") For Each win In colSh.Windows If TypeName(win.document) = "HTMLDocument" Then If InStr(win.document.Title, "okwave") > 0 Then Set objIE = win Exit For End If End If Next Debug.Print objIE.document.Title End Sub

  • ie操作について教えてください

    vbaで alt="口座情報" をクリックしたいのですが、うまく押せません。 ソースの一部は ****************************************************** <form name="frmSubmit"> <map id="Map" name="Map"> <area title="お問い合わせ 0120-456-858" onclick="return OpenLink();" href="javascript:void(0);" shape="rect" alt="お問い合わせ 0120-456-858" coords="273,13,463,40"> <!--area shape="rect" coords="426,13,469,40" alt="TOP" href="javascript:void(0);" onclick="return SubmitTask('RT', 'WEL', '00', '100', '');"--> <area title="FAQ" onclick="return GetLinks();" href="javascript:void(0);" shape="rect" alt="FAQ" coords="487,13,529,40"> <area title="ヘルプ" onclick="return CallForHelp();" href="javascript:void(0);" shape="rect" alt="ヘルプ" coords="547,13,598,40"> <area title="ログアウト" onclick="return SubmitTask('RT', 'CDC', '49', '', '');" href="javascript:void(0);" shape="poly" alt="ログアウト" coords="612,17,687,17,689,19,689,34,687,36,612,36,610,34,610,19"> <area title="口座情報" onclick="return SubmitTask('RT', 'ACS', '00', '23', 'frmCurrencyAndBal');" href="javascript:void(0);" shape="poly" alt="口座情報" coords="87,79,0,79,0,61,2,56,5,53,82,53,85,56,87,60"> <area title="振込・振替" onclick="return SubmitTask('RT', 'CDC', '09', '', '');" href="javascript:void(0);" shape="poly" alt="振込・振替" coords="191,79,91,79,91,64,93,59,96,56,184,56,188,58,191,62"> <area title="資産運用" onclick="return SubmitTask('RT', 'CDC', '08', '', '');" href="javascript:void(0);" shape="poly" alt="資産運用" coords="284,79,195,79,195,64,197,59,200,56,279,56,283,60,284,63"> <area title="ローン" onclick="return SubmitTask('RT', 'HLI', '00', '100', '');" href="javascript:void(0);" shape="poly" alt="ローン" coords="355,79,288,79,288,64,290,59,295,56,341,56,350,56,355,63"> <area title="レート照会" onclick="return SubmitTask('RT', 'CDC', '10', '', '');" href="javascript:void(0);" shape="poly" alt="レート照会" coords="462,79,360,79,360,64,362,59,365,56,454,56,460,59,462,63"> <area title="お客さまサポート" onclick="return SubmitTask('RT', 'CDC', '11', '', '');" href="javascript:void(0);" shape="poly" alt="お客さまサポート" coords="607,79,465,79,465,64,467,59,472,56,600,56,605,58,607,63"> </map> </form> ****************************************************** です。 '1個目の実験***************** For Each myobj In objIE.Document.all.tags("area") If TypeName(myobj) = "HTMLInputElement" Then If myobj.alt = "口座情報" Then myobj.Click Exit For End If End If Next '2個目の実験***************** For Each myobj In objIE.Document.all.tags("form") If TypeName(myobj) = "HTMLInputElement" Then If myobj.alt = "口座情報" Then myobj.Click Exit For End If End If Next '3個目の実験***************** Dim objIMG As HTMLImg Dim objDOC As HTMLDocument Set objDOC = objIE.Document For i = 0 To objDOC.images.Length - 1 Set objIMG = objDOC.images(i) If objIMG.alt = "口座情報" Then objIMG.Click End If Next '4個目の実験***************** For Each myobj In objIE.Document.all.tags("form") '↓で実行時エラー'438 オブジェクトはこのプロパティまたは メソッドをサポートしていません If myobj.alt = "口座情報" Then myobj.Click Exit For End If Next '5個目の実験***************** 'ひっかからない For Each myobj In objIE.Document.all.tags("area") If myobj.alt = "口座情報" Then myobj.Click Exit For End If Next をやってみたのですが、 どれも引っかからないです。 画像の「口座情報」をクリックしたいのです。ログインはvbaでできました。 どうすればいいでしょうか!? ご教授よろしくお願いします。

  • 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> ------------------↑-----------------------------------------

  • 実行時エラー92 forループが初期化されていませ

    エクセルVBAでFor Eachを使ってるのですが、 Nextの部分で 実行時エラー92 forループが初期化されていません。 というエラーになります。 On Error GoTo ERR1 For Each myObj In objIE.Document.all.tags("ul") If myObj.className = "" Then '○○の場合 Exit Sub ERR1: If Err.Number = 424 Then On Error GoTo 0 'エラーを解除 '▲▲の場合 If strカテゴリ Like "" Then Exit Sub End If End If End If Next というコードなのですが、どこかおかしいですか?

  • VBAでIEのHTMLタグの要素を操作したい

    お世話になります。 ExcelのVBAで作成しております。 下記のhtmlがある状態で(1)を変える場合は、 For Each itm In objIE.document.GetElementsByTagName("input") If itm.ID = "entry_title" Then itm.Value = "A" Exit For End If Next で変更できたのですが、(2)(要素)を変更するには、 どうしたらよいでしょうか? お手数ですが、よろしくお願いいたします。 <input value="(1)" id="entry_title">(2)</input>

  • VBSでobjLINK.InnerTextの一部だ

    VBSでリンクをクリックしたいのですが、 某所からコピペしたVBSのスクリプトです。 これを実行すると、たしかに YAHOOのオークションに行きます。 ============================== Option Explicit Dim objIE Dim objShell Dim strBody Dim objLINK 'Shell.Application オブジェクトの作成 Set objShell = CreateObject("Shell.Application") 'IE を起動して Yahoo のトップページを開く Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True 'IEウィンドウを表示 objIE.Navigate2 "http://www.yahoo.co.jp/" 'Yahoo のページが起動する 'ページの読み込みが終わるまで待機する Do Until objIE.Busy = False '空ループだと無駄にCPUを使うので250ミリ秒のインターバルを置く WScript.sleep(250) Loop ' Yahoo トップページのオークションのリンクをクリックする For Each objLINK In objIE.Document.Links If objLINK.InnerText = "オークション" Then objLINK.Click Exit For End If Next ============================ 質問させていただきたいのは If objLINK.InnerText = "オークション" Then この部分が例えば「オークション」でなくとも「オークショ」のように アンカーテキストリンクの一部が同じだったら、いけるようにしたいのですが、 どうしたらよろしいでしょうか? 「オークション」 だったら 「オークショ*」 や 「*クション」 とかでもいけるのかなーとおもってたんですが、 全然わからないんです。 どうかよろしくお願い致します。

  • VBS 既に開いているIEを操作

    以下のコードで既に開いているIEをアクティブ化しています。 Dim objIE set Shell=Wscript.CreateObject("Shell.Application") for each tmp in Shell.Windows if TypeName(tmp.document)="HTMLDocument" then if tmp.LocationURL="指定URL" then set objIE=tmp end if end if Next 指定URLの部分を完全に一致していた場合ではなく、一部が一致していたら、そのIEをアクティブ化するようにしたいです。可能ならば方法を教えて欲しいです。