あるボタンをクリックしてその先に進みたいのですが上手くいきません。
未読分:3件
昨日以降(0) 2日前以降(0) 3日前以降(0) 4日前以降(0) 5日前以降(0)
近田 伸矢, 植木 悠二, 上田 寛
IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。
Message#3 2014年9月5日(金)08時28分 From: konosminku | 返事 削除 変更 |
見事にキーワードは「ログイン」です! 処理もうまくいきましたので、大変感謝しています。 ありがとうございました! |
Message#2 2014年9月4日(木)23時18分 From: 管理人 | 返事 削除 変更 |
ログインがaタグということは、javascriptで処理されているかもしれないですね。 id設定がされていないということですが、「ログイン」などそのタグの中で一意のキーワード(htmlソースの中で一度したか出てこないキーワード)はありますか? おそらく「ログイン」でいけると思うのですが、それを想定したソースは以下になります。 sampleプロシージャを実行してみてください。 また、参考ページも記載しておきます。 【参考ページ】 指定URLを表示:http://www.vba-ie.net/ie/subroutine2.html フォーム入力:http://www.vba-ie.net/form/subroutine-input.html タグクリック処理:http://www.vba-ie.net/form/subroutine-tagclick.html 【プログラム】 *○○*の部分は変更してください。 #If VBA7 Then Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal ms As LongPtr) #Else Private Declare Sub Sleep Lib "kernel32" (ByVal ms As Long) #End If 'ページ表示サブルーチン Sub ieView(objIE As InternetExplorer, _ urlName As String, _ Optional viewFlg As Boolean = True) 'IEのオブジェクトを作成する Set objIE = CreateObject("InternetExplorer.Application") 'IEを表示・非表示 objIE.Visible = viewFlg '指定したURLのページを表示する objIE.Navigate urlName 'IEが完全表示されるまで待機 Call ieCheck(objIE) End Sub 'ページ完全読込処理サブルーチン Sub ieCheck(objIE As InternetExplorer) Dim timeOut As Date timeOut = Now + TimeSerial(0, 0, 10) Do While objIE.Busy = True Or objIE.ReadyState <> 4 DoEvents Sleep 100 If Now > timeOut Then objIE.Refresh timeOut = Now + TimeSerial(0, 0, 10) End If Loop timeOut = Now + TimeSerial(0, 0, 10) Do Until objIE.document.ReadyState = "complete" DoEvents Sleep 100 If Now > timeOut Then objIE.Refresh timeOut = Now + TimeSerial(0, 0, 10) End If Loop End Sub 'タグクリックサブルーチン Sub tagClick(objIE As InternetExplorer, _ tagName As String, _ tagStr As String) 'タグをクリック For Each objTag In objIE.document.getElementsByTagName(tagName) If InStr(objTag.outerHTML, tagStr) > 0 Then objTag.Click Call ieCheck(objIE) Exit For End If Next End Sub 'フォーム入力サブルーチン Sub formText(objIE As InternetExplorer, _ nameValue As String, _ tagValue As String) 'テキストボックス・パスワードボックスに値を入力 For Each objTag In objIE.document.getElementsByTagName("input") If objTag.Name = nameValue Then objTag.Value = tagValue Exit For End If Next 'テキストエリアに値を入力 For Each objTag In objIE.document.getElementsByTagName("textarea") If objTag.Name = nameValue Then objTag.Value = tagValue Exit For End If Next End Sub Sub sample() Dim objIE As InternetExplorer 'サイトを表示 Call ieView(objIE, "*ログインしたいサイトURL*") '名前のテキストボックスに値を入力 Call formText(objIE, "*name*", "*田中太郎*") 'パスワードボックスに値を入力 Call formText(objIE, "*pass*", "*1234*") '↓ログイン部分に一意のキーワードを入力 Call tagClick(objIE, "a", "*ログイン*") End Sub |
Message#1 2014年9月4日(木)22時33分 From: konosminku | 返事 削除 変更 |
VBAでIEを操作していてあるサイトのログイン部分にデータを入力しています。 入力自体はできたのですが、あるボタンをクリックしてその先に進みたいのですが上手くいきません。 リンク先のURLを直接してしてもサイトのセキュリティにひっかかっているのかエラーになってしまいます。 aタグにidが設定されていないのでできないのかわかりませんが、どのようにすればよろしいでしょうか? EXCELは2013でブラウザはIE9を利用しています。 よろしくお願いします。 |
昨日以降 2日前以降 3日前以降 4日前以降 5日前以降