自動ログインプログラムでエラーが発生する理由を解説

このQ&Aのポイント
  • あるサイトの認証画面に自動的にID/PASSを入力するプログラムを作成しましたが、ログイン時にエラーが発生します。
  • ログイン部分のプログラムが正しく動作しないため、エラーが発生しています。
  • プログラムのID/PASSの入力は問題なく行えるものの、ログイン時に予期しない操作によりエラーが発生しています。
回答を見る
  • ベストアンサー

あるサイト(https://search.npb.go.jp/kanp

あるサイト(https://search.npb.go.jp/kanpou/)の認証画面に自動的にID/PASSを入力して、自動的にログインするようなプログラムを作りたいのですが、ID/PASSの入力は問題無く行えるものの、ログインの際にエラー(予期しない操作により、処理中にエラーが発生しました。再度ログインを行ってください。)となります。何が悪いのでしょうか? 【ログイン部分のプログラム】 ieTarget = CreateObject("InternetExplorer.Application") ieTarget.Visible = TrueValue = KANPOU_ID .document.Forms(0).elements("password").Value = KANPOU_PASS .document.forms(0).elements.submit() ieTarget.navigate("https://search.npb.go.jp/kanpou/") Do While (ieTarget.busy) Loop Do While (ieTarget.document.ReadyState <> "complete") Loop With ieTarget .document.Forms(0).elements("uji.model.4.value_userId").Value =KANPOU_ID .document.Forms(0).elements("password").Value = KANPOU_PASS .document.forms(0).elements.submit() End With

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

ループで探してしまいました。そうしたら、57でヒットしました。 > .document.forms(0).elements.submit() ↓ ieTarget.Document.all.Item(57).Click

higuchi-yu
質問者

お礼

無事に自動ログインできました。 どうもありがとうございます。 本当に助かりました。

その他の回答 (1)

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.1

ログインボタンと同じ事を行う > .document.forms(0).elements.submit() ieTarget.navigate("javascript:login();return false;")

higuchi-yu
質問者

お礼

ご回答ありがとうございます。 自動ログインはできなかったのですが、 この様なやり方もあるのかと参考になりました。

関連するQ&A

  • vbaでログインできない 手動だとできる

    GMO証券のでも画面にログインするvbaを組んでるのですが、 vbaでsubmitを押すと、エラー画面になってしまいます。画像を添付します。 しかし手動でログインボタンを押すとログインできるんです。そんなこと、あり得ますか? コードは↓です。 ****************************************************** Sub gmo() Dim objIE As Object Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True objIE.Navigate "https://fx-demo.click-sec.com/ygmo/servlet/login?FAGD=1" Do Until objIE.ReadyState = 4 Loop With objIE.Document.Forms("frmMain") .elements("j_username").Value = "ID" .elements("j_password").Value = "PW" '手動ならログインできるのにvba(submit)だと「既にログインしています」になる '.submit End With End Sub ****************************************************** vbaだと、すでにログインしていなくても「既にログインしています」になってしまいます。 何かわかる方、ご回答よろしくお願いします。

  • javascriptを使ったformへの自動ログインがうまくいきません

    こんにちは、以下のような書かれたサイトにjavascriptを使って自動ログインしたいと考えていますが、うまくログインされません。 一番下のinputタグにてログインしているようなのですが IE.Document.Form1.imgLogin.click(); とすると、エラーになるので IE.Document.Form1.elements(5).click(); としましたがエラーにはならないもののうまくいきませんでした。 IE.Document.Form1.elements(5).data = true; IE.Document.Form1.elements(5).value = true; IE.Document.Form1.action = "index.aspx"; IE.Document.Form1.submit(); としてみましたが、こちらもうまくいきませんでした。 どのようにしたら、自動ログインすることが可能なのでしょうか? 教えて頂けると非常に助かります。 よろしくお願いいたします。 ---サイトフォーム <FORM id=Form1 name=Form1 action=index.aspx method=post> <INPUT id=__VIEWSTATE type=hidden value=... name=__VIEWSTATE> <INPUT id=__EVENTVALIDATION type=hidden value=... name=__EVENTVALIDATION> <INPUT id=txtUid maxLength=6 value="" name=txtUid> <INPUT id=txtPwd type=password maxLength=20 value="" name=txtPwd autocomplete="off"> <INPUT language=javascript id=imgLogin onclick="{ if (document.Form1.txtUid.value==&quot;&quot;) { document.Form1.txtUid.focus();alert('ユーザIDを入力してください。');return false;} if (document.Form1.txtPwd.value==&quot;&quot;) {alert('パスワードを入力してください。');document.Form1.txtPwd.focus();return false;} return true;};" type=image src="img\login1.gif" border=0 name=imgLogin></form> ----オートログイン.js var IE = WScript.CreateObject("InternetExplorer.Application"); IE.Visible = true; IE.Navigate("http://hogehoge/hoge/index.aspx"); while(IE.busy) ; while(IE.Document.readyState != "complete") ; IE.Document.forms(0).elements(3).value = "user"; IE.Document.forms(0).elements(4).value = "password"; //IE.Document.forms(0).elements(5).click(); //IE.Document.Form1.imgLogin.click(); IE.Document.Form1.elements(5).data = true; IE.Document.Form1.action = "index.aspx"; IE.Document.Form1.submit();

  • VBAでサイトのsubmitボタンをクリックしたい

    とあるサイトに自動ログインするvbaを作っています。 (三流君を参考にしています) Sub ログイン() Set ObjIE = CreateObject("InternetExplorer.application") ObjIE.Visible = True '************************************************** ObjIE.navigate "https://www" Do While ObjIE.Busy = True '表示させるまで待つ DoEvents Loop Application.Wait (Now + TimeValue("00:00:03")) ObjIE.Document.all.UserId.Value = "ID" ObjIE.Document.all.submit_l貸出照会.Click ’ここでエラーになる End Sub 上記のようなコードを書いているのですが 該当サイトのソースを読み取り、 「INPUT TYPE="text" NAME="userid" VALUE=""」 の部分は ObjIE.Document.all.UserId.Value = "ID" で出来たのですが 「<INPUT TYPE="submit" VALUE="貸出照会">」 の部分をクリックしてログインしたいのですが ObjIE.Document.all.貸出照会.Click だとエラーになってしまいます。 ObjIE.Document.Forms(0).item("貸出照会").Click もダメでした。 ご教授よろしくお願い致します。 (エクセル2003)

  • 「地図」で検索するにはどういう操作をすればいいので

    ヤフーのトップページから 値を入れて検索を押すまではできるのですが 「ウェブ」ではなく「地図」で検索するにはどういう操作をすればいいのでしょうか? Sub yahoo() Dim objIE As Object Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True objIE.Navigate "http://www.yahoo.co.jp/" Do While objIE.Busy = True DoEvents Loop Do While objIE.Document.ReadyState <> "complete" DoEvents Loop objIE.Document.forms(0).elements("p").Value = "東京" '‘「地図」をクリックする操作をしたい objIE.Document.forms(0).submit Set objIE = Nothing End Sub 宜しくお願いいたします。

  • ie操作 ログインボタンを押せないです

    こんばんは。いつもお世話になっております。 ie操作でうまく行かないので教えてください。 イトーヨーカドーのサイトにログインしたいのですがログインボタンが押下できません。 Sub test() Dim objIE As InternetExplorer Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True objIE.Navigate "https://www.iy-net.jp/" Do While objIE.Busy = True DoEvents Loop objIE.Document.all("userId").Value = ID objIE.Document.all("password").Value = PW objIE.Document.forms(0).submit Set objIE = Nothing End Sub --------------------------------------------------------- だと、 「ハイフンを除く7ケタを半角数字でご入力ください」になってしまいます。 ログインボタンが押せてないのかもしれないけど、よくわかりません。 --------------------------------------------------------- Sub test() Dim objIE As InternetExplorer Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True objIE.Navigate "https://www.iy-net.jp/" Do While objIE.Busy = True DoEvents Loop objIE.Document.all("userId").Value = ID objIE.Document.all("password").Value = PW 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 Set objIE = Nothing End Sub --------------------------------------------------------- にすると、 https://www.iy-net.jp/nspc/logininput.do のURLが表示されて会員認証の画面になってしまいます。 だからって objIE.Navigate "https://www.iy-net.jp/" を https://www.iy-net.jp/nspc/logininput.do にして objIE.Document.forms(0).submit すると https://www.iy-net.jp/nspc/searchresult.do のページが表示されて 「再度 TOPページよりログインいただけますようお願い申し上げます。」 になってしまいます。 ログインする方法を教えていただけますか? ご教授よろしくお願いします。

  • ログイン後他のページへ移動して表示保存

    Aというサイトに自動でログイン後に、他のページ(同サイト内)を表示してhtmlで保存する場合どのように変更すればいいのでしょうか?(今は自動ログイン後https://www.aaaaaaa.comのhtmlをexcel上に表示していますがこれをhttps://www.aaaaaaa.com/bbに移動させ表示してhtmlで保存したい) 教えて頂けませんでしょうか?よろしくお願いします。 XP/Excel2003 Sub test() Dim objIE As Object Dim URL01 As String Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True URL01 = "https://www.aaaaaaa.com" ID01 = "△△△△△△△" PASS = "○○○○○○○" objIE.Navigate URL01 Call wait_open(objIE) 'form.id部分はサイトのソースに合わせる objIE.document.all.ID.Value = ID01 'form.password部分はサイトのソースに合わせる objIE.document.all.PASS.Value = PASS Call wait_open(objIE) 'form部分はサイトのソースに合わせる objIE.document.LOGIN.submit Call wait_open(objIE) Sheets("Sheet1").Range("A1").Value = objIE.document.body.innerHTML End Sub Sub wait_open(objIE) Do While objIE.Busy Loop Do While objIE.document.ReadyState <> "complete" Loop End Sub

  • 次回からのログインを省略にチェックを入れたくない

    vbaで教えてgoo(Goo知恵袋)にログインを試みています。 ログインする事はできたのですが 出来れば「次回からのログインを省略」にチェックを入れたくなのです。 Goo知恵袋はデフォルトでチェックが入っています。 自分で作ったコードは、 --------------------------------------------------------- Sub test() Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True objIE.Navigate "http://otasuke.goo-net.com/mypage#tabs" '表示終了まで共通_表示待ち Do While objIE.Busy = True DoEvents Loop objIE.document.all.mailaddress.Value = "" objIE.document.all.Password.Value = "" '表示終了まで共通_表示待ち Do While objIE.Busy = True DoEvents Loop objIE.document.all("login_skip")(1).Checked = False objIE.document.Forms(1).submit Set objIE = Nothing End Sub --------------------------------------------------------- です。 objIE.document.all("login_skip")(1).Checked = False でエラーになってしまいます。 ご教授よろしくお願いします。

  • VBAで教えてgooに自動ログインしたい

    Sub 教えてgoo() Dim objIE As Object Const READYSTATE_COMPLETE As Long = 4 Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True objIE.Navigate "https://login.mail.goo.ne.jp/id/authn/LoginStart?Site=oshiete.goo.ne.jp&Success=http%3A%2F%2Foshiete.goo.ne.jp%2F" Do While objIE.Busy = True DoEvents Loop Do Until objIE.ReadyState = READYSTATE_COMPLETE Loop objIE.document.all.all("uname").Value = "gooID" objIE.document.all.all("pass").Value = "gooPW" Do While objIE.Busy = True DoEvents Loop Do Until objIE.ReadyState = READYSTATE_COMPLETE Loop objIE.document.all("ログイン").Click End Sub --------------------------------------------------------- を実行してみても、 objIE.document.all.all("uname").Value = "gooID" objIE.document.all.all("pass").Value = "gooPW" objIE.document.all("ログイン").Click の部分がエラーになってしまいます。 教えてgooは、VBAでログインできないように規制されてるのでしょうか?

  • VBAでIE操作

    こんばんは。エクセル2003です。 証券会社にVBAでログインを試みてるのですができません。 ソースの一部を転記します。 <label for="account_id"><span>ユーザー名</span></label> <input type="text" tabindex="1" id="account_id" name="account_id" /> <label for="password"><span>パスワード</span></label> <input type="password" tabindex="2" id="password" name="password" /> <div id="rememberbox"> <label for="remember" id="rememberlabel">ユーザー名を記録する</label> <input type="checkbox" tabindex="3" name="remember" id="remember" /> </div> なので、下記VBAコードを作りました。 Sub IGマーケット証券() Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True objIE.Navigate "http://www.igmarkets.co.jp/login/" Do While objIE.Busy = True DoEvents Loop Const READYSTATE_COMPLETE As Long = 4 Do Until objIE.ReadyState = READYSTATE_COMPLETE Loop objIE.Document.all("account_id").Value = "test" objIE.Document.all("password").Value = "test" objIE.Document.Forms(0).submit Set objIE = Nothing End Sub ですが、 objIE.Document.all("account_id").Value = "test" のところでエラーになってしまいます。 objIE.Document.all("login").Value = "test" に変えても同じです。 何がいけないのでしょうか? アドバイスよろしくお願いします。

  • VBSでフォームに値を繰り返し入れる方法で悩んでいます

    VBScriptでフォームに値を入れることを繰り返したいのですがどうもうまくいかずに悩んでいます。いい方法を教えて下さい。 指定ページを開いた後に If objIE.Document.URL = strURL Then Set objIN = objIE.Document.getElementByTagName("INPUT") objIN(0).value = ID objIN(1).value = PASSWORD objIN(2).Click Do Until objIE.Busy = False WScript.sleep(250) Loop If objIE.Document.URL <> strAfterLoginPage Then objIN(0).value = ID objIN(1).value = PASSWORD objIN(2).Click Do Until objIE.Busy = False WScript.sleep(250) Loop ElseIf objIE.Document.URL <> strAfterLoginPage Then objIN(0).value = ID objIN(1).value = PASSWORD objIN(2).Click Do Until objIE.Busy = False WScript.sleep(250) Loop ElseIf objIE.Document.URL <> strAfterLoginPage Then objIN(0).value = ID objIN(1).value = PASSWORD objIN(2).Click Do Until objIE.Busy = False WScript.sleep(250) Loop ElseIf objIE.Document.URL <> strAfterLoginPage Then objIN(0).value = ID objIN(1).value = PASSWORD objIN(2).Click Do Until objIE.Busy = False WScript.sleep(250) Loop Else objIE.Document.URL <> strAfterLoginPage Then objIN(0).value = ID objIN(1).value = PASSWORD objIN(2).Click Do Until objIE.Busy = False WScript.sleep(250) Loop End If 以下省略 といったように1回でログインできなかった場合何度か入力するプログラムなのですが最初のElseIfの後のところで「オブジェクトがありません」となってしまいます。 ページも遷移してないのですが何故かオブジェクトがなくなってしまいます。 そういった対策をすればよいのでしょうか? お願いします。

専門家に質問してみよう