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

このQ&Aのポイント
  • 自動ログイン後の他のページを表示してHTMLで保存する方法について教えてください。
  • 現在はhttps://www.aaaaaaa.comのHTMLをExcel上に表示していますが、https://www.aaaaaaa.com/bbに移動させて表示してHTMLで保存したいです。
  • XP/Excel2003で使用しています。
回答を見る
  • ベストアンサー

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

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

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

  • ベストアンサー
  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.2

 頑張って コーディング されたみたいですが、3点ほど ミス があります。 1)先ず、小さなコトですが、Sub test() に対する End Sub が抜けています。  ついでに、 objIE.Navigate "https://www.aaaaaaa.com/bb"" は objIE.Navigate "https://www.aaaaaaa.com/bb" でしょうね。   2)次に、 strBody = objIE.document.body.innerHTML として、strBody という変数の中に「取得したもの」を代入したのに、その直後に strBody = InputBox("ファイル名を指定してください") として、同じ strBody という変数の中に "別のもの"(ファイル名)を代入してしまっています。  従って、後者の変数名は「strFileName」などに変えて strFileName = InputBox("ファイル名を指定してください") のようにし、これ以降の「strBody」は、すべて「strFileName」に置換してください。 3)最後に、[Open ステートメント] で ファイル を開いたまでは良かったのですが、何もせずに [Close ステートメント] で ファイル を閉じています。  したがって、 >空ファイルのみ作成されていました。 ということになります。  開いた ファイル に対して書き込む操作は [Print # ステートメント] になります。 Open strFileName For Output As intFileNum Print #intFileNum, strBody Close #intFileNum のようにしてみてください。

nana01010101
質問者

お礼

詳しく解説して頂きありがとうございました。 無事、ファイル化出来ました。 ありがとうございました。

その他の回答 (1)

  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.1

>移動させ表示してhtmlで保存したい  「URL01」に ログイン した後に、普通に、 https://www.aaaaaaa.com/bb の ページ を Navigate すればよいかと。。。。 Sheets("Sheet1").Range("A1").Value = objIE.document.body.innerHTML End Sub の前に objIE.Navigate "https://www.aaaaaaa.com/bb" Call wait_open(objIE) を入れてみられたらいかがでしょうか?

nana01010101
質問者

お礼

無事、移動出来ました。ありがとうごいました。

nana01010101
質問者

補足

移動は教えて頂いた方法で解決できましたが、htmlで保存ですが下記の場合だと objIE.document.body.innerHTMLで取得したものはファイル化出来ないのでしょうか? 空ファイルのみ作成されていました。 ご教授頂けませんでしょうか?お願い致します。 Sub test() Dim objIE As Object Dim URL01 As String Dim intFileNum As Integer 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) objIE.Navigate "https://www.aaaaaaa.com/bb"" Call wait_open(objIE) strBody = objIE.document.body.innerHTML intFileNum = FreeFile strBody = InputBox("ファイル名を指定してください") If strBody <> "" Then strBody = strBody & ".html" Open strBody For Output As intFileNum Close #intFileNum End If Sub wait_open(objIE) Do While objIE.Busy Loop Do While objIE.document.ReadyState <> "complete" Loop End Sub

関連するQ&A

  • 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操作 教えてgoo マイページ

    賃貸・タウン情報の「Q&A広場」 で教えてgooを使っているのですが 2個目のie_waitが機能しないというか意味がない状態になります。 ********************************************************** Sub test() Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True objIE.Navigate "http://hiroba.chintai.net/login?return_url=http%3A%2F%2Fhiroba.chintai.net%2Fmypage#tabs" Call ie_wait '1個目 objIE.Document.all("mailaddress").Value = "あああ" objIE.Document.all.Password.Value = "1111" objIE.Document.all.login_skip.Click objIE.Document.Forms(1).submit Call ie_wait '2個目 End Sub -------------------------------------------------- Sub ie_wait() Const READYSTATE_COMPLETE As Long = 4 Do Until objIE.ReadyState = READYSTATE_COMPLETE Loop Do While objIE.Busy = True DoEvents Loop End Sub ********************************************************** 二個目のie_waitは、 ie_waitの操作が完了しないのに次のコードへ進んでしまいます。 一個目のie_waitは、 objIE.Navigate "http://hiroba.chintai.net/login?return_url=http%3A%2F%2Fhiroba.chintai.net%2Fmypage#tabs" が表示さえるのを待つコードですが、 objIE.Document.Forms(1).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)

  • ie操作 2回目のwaitが無視される

    FC2にログインし、アクセス解析のページを開きたいのですが Dim objIE As InternetExplorer Sub test() Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True objIE.navigate "http://fc2.com/login.php" Call wait objIE.document.all("email").Value = "test@yahoo.co.jp" objIE.document.all("pass").Value = "test" objIE.document.all.Item("Image").Click Call wait 'ここが無視される!!! objIE.navigate "http://analyzer.fc2.com/" End Sub Sub wait() Const READYSTATE_COMPLETE As Long = 4 Do Until objIE.readyState = READYSTATE_COMPLETE Loop Do While objIE.Busy = True DoEvents Loop End Sub このコードだとうまくいきません。 このコードをF5で実行すると、エラーにはならないのですが、 objIE.navigate "http://analyzer.fc2.com/" ができてません。 objIE.navigate "http://analyzer.fc2.com/"の部分にブレークポイントを設置し、 ログイン後の画面がちゃんと表示されたことを確認して、 objIE.navigate "http://analyzer.fc2.com/"に進むと、 objIE.navigate "http://analyzer.fc2.com/"が無視され、 http://analyzer.fc2.com/のページに移りません。 同じ条件なのに、 objIE.navigate "http://analyzer.fc2.com/"の部分にブレークポイントを設置し、 ログイン後の画面がちゃんと表示されたことを確認して、 objIE.navigate "http://analyzer.fc2.com/"に進むと、 実行時エラー -2147024726のオートメーションエラーになることがあります。 どうやったら、2回目のwaitが無視されずに進みますか? ログインされると http://fc2.com/login.php から http://id.fc2.com/?login=done へURLが変わりますが objIEをウォッチウィンドウで見てると、ずっとhttp://fc2.com/login.phpのままです。 環境:win8.1/エクセル2010

  • アクティブウインドウの制御

    IPATの自動投票システムをvisual basicで作ってるんですが ログインする際に途中で別ウインドウで開くとなってしまい、 アクティブが元の画面のまま次の画面に遷移しないので、 前の画面にIDが記入されてしまいます。 対策とか出来ますでしょうか。 途中からのソースです。 ~ URL01 = "http://www.ipat.jra.go.jp/" URL02 = "https://www.ipat.jra.go.jp/pw_080_i.cgi" ID01 = Sheets("IPAD").Range("B1").Value ←INEDID ID02 = Sheets("IPAD").Range("B2").Value ←加入者番号 PASS01 = Sheets("IPAD").Range("B3").Value ←PASS ~ objIE.Document.Form1.inetid.Value = ID01 ←INEDID入れて遷移 objIE.Document.Form1.Action = URL02 ←画面遷移先 objIE.Document.Form1.submit PASS02 = Sheets("IPAD").Range("B4").Value  画面遷移先の加入者番号ではなく、遷移元のINEDIDに値が入ってしまう よろしくおねがいします。

  • vba ie操作 ログインしたい

    いつもお世話になっております。 前回ご回答いただいた方ありがとうございました。 またまた困ったことにログインしたいサイトがあるのですがうまくできません。 URLはhttps://www.a-q-f.com/openpc/USB0100S01Action.do?aqf_id=S0000&send_url=https://www.a-q-f.com/&get_userInfo=&r=2941249539317530063 なのですが、ログインが二つあり、左側でログインしたいのですが、ボタンを押下できません。 **************************************************** Sub 永久不滅ドットコム() Dim objIE As InternetExplorer Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True objIE.Navigate "https://www.a-q-f.com/openpc/USB0100S01Action.do?aqf_id=S0000&send_url=https://www.a-q-f.com/&get_userInfo=&r=2941249539317530063" Do While objIE.Busy = True Or objIE.ReadyState <> 4 DoEvents Loop objIE.Document.all.ID.Value = "test" objIE.Document.all.idPassword.Value = "test" Do While objIE.Busy = True Or objIE.ReadyState <> 4 DoEvents Loop 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 objIE.Document.Forms(0).Click '何も起こらない objIE.Document.Forms(0).Submit 'エラーになる Set objIE = Nothing End Sub **************************************************** をやってみましたが無理でした・・・ ご教授よろしくお願いします。

  • エクセルでのVBA

    エクセルでVBAを使ってIEで指定のURLを開いて、VBAで指定したWEBフォームにエクセルで指定したセルの値を入力したいのですが、下記のコードを入れるとエラーが出てしまいます。   A1:1-1 or 1-2 or 1-3 B1:月曜日 C1:火曜日 D1:水曜日 上のA1~D1まで入力した上でコマンドボタンをクリックすると、自動的に行うようにしたいです。 Private Sub CommandButton1_Click() Dim objie As Object Set objie = CreateObject("InternetExplorer.application") objie.Visible = True objie.Navigate "http://●●●●/form.html" Dim kubun As String kubun = range("A1") Select Case kubun Case "1-1" call ma1_1 Case "1-2" call ma1_2 Case "1-3" call ma1_3 End select Set objie = Nothing End sub Sub ma1_1() objie.Document.all.form1_1.Value = Range("B1") End Sub Sub ma1_2() objie.Document.all.form1_1.Value = Range("B1") objie.Document.all.form1_2.Value = Range("C1") End Sub Sub ma1_3() objie.Document.all.form1_1.Value = Range("B1") objie.Document.all.form1_2.Value = Range("C1") objie.Document.all.form1_3.Value = Range("D1") End Sub これで実行を押すと、objie 変数が定義されていません。と出てしまいます。このobjieを有効にするにはどうしたよいのでしょうか? わかる方いましたらご教授願います。 よろしくお願いします。

  • 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ページよりログインいただけますようお願い申し上げます。」 になってしまいます。 ログインする方法を教えていただけますか? ご教授よろしくお願いします。

  • If~ElseIfが冗長なので修正したいが・・・

    If~ElseIf~Else~EndIfの文でかなり冗長な気がするのですがもっと見栄え良く書く方法はないでしょうか? 個人的にはForなんとかで出来るような気がしますがうまくいきません。 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

  • VBAでSkyDriveにログインしたい

    VBAでSkyDriveにログインしたいのですが、 --------------------------------------------------------- Sub SkyDriveにログインする() Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True objIE.Navigate "https://login.live.com/login.srf?wa=wsignin1.0&rpsnv=11&ct=1340539242&rver=6.1.6206.0&wp=MBI_SSL_SHARED&wreply=https:%2F%2Fskydrive.live.com%2F%3Flc%3D1041&lc=1041&id=250206&mkt=ja-JP&cbcxt=sky" '表示終了まで共通_表示待ち Do While objIE.Busy = True DoEvents Loop objIE.Document.all.PageID.Value = "aaa" objIE.Document.all.passwd.Value = "aaa" '表示終了まで共通_表示待ち Do While objIE.Busy = True DoEvents Loop objIE.Document.Forms(0).submit Set objIE = Nothing End Sub --------------------------------------------------------- を実行すると、 objIE.Document.all.PageID.Value = "aaa" の部分で、 【オブジェクトは、このプロパティまたはメソッドをサポートしていません。(Error 438)】 というエラーになります。 たぶん、「PageID」が間違ってると思うのですが、ソースを見てもよくわかりません。 ご教授いただけないでしょうか? ご回答よろしくお願いします。

専門家に質問してみよう