• 締切済み

VBAでIE操作時のLocationURLとURL

VBAでInternet Exploreを操作するときによく出てくるコードで、LocationURL と URLの違いについて教えてください。  また、現在開いているページのURLを取得するには、ObjIE.LoactinURLとObjIE.Document.URL のどちらを使うのが正しいのですか?  よろしくお願いします。

みんなの回答

  • kumatti1
  • ベストアンサー率60% (73/121)
回答No.1

フレームセットを使ってるページで各フレームのURLを得るなら、 > ObjIE.Document.URL で、メインのURLなら > ObjIE.LoactinURL て使い分けでは。

関連するQ&A

  • ie操作 フレームのURLがあってるか取得したい

    http://okwave.jp/qa/q8135136.html こちらのANo.2様のご意見を参考に、フレーム操作について調べているのですが、 サンプルを作ってみたのですが、うまくできません。 サンプルの内容としては、URLの中のフレームのオブジェクトを変数に格納し、 その格納したオブジェクトのURLをメッセージボックスに表示し、 欲しいURLかどうかを目視で確認したいのですが Dim objIE As InternetExplorer Sub Sample001() Dim myObj As Object Dim objFr As Object Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True objIE.navigate "http://masaboo.cside.com/new_html1/ht_sun/frame02.htm" Stop Set objFr = objIE.document.frames.Item(1) MsgBox objFr.document.frames.LocationURL Set objIE = Nothing End Sub MsgBox objFr.document.frames.LocationURL だと、実行時エラー438になります。 MsgBox objFr.document.LocationURLもMsgBox objFr.LocationURLもダメでした。 私は何か根本的に勘違いをしているような気がしますが、格納したフレームのURLを表示する方法があれば教えてください。 ご教授よろしくお願いします。

  • VBA IE操作 ログイン後URLを取得したい

    yahooにログインするVBAコードはわかるのですが、 ログインが失敗なのか正常にログインできたのかをVBAで知りたいです。 結果を知るには、ログインボタン押下後のURLを取得できればいいと思うのですが その方法がわかりません。 ログイン自体は、 --------------------------------------------------------- Sub ie_test() Dim objIE As Object 'IEオブジェクト参照用 'インターネットエクスプローラーのオブジェクトを作る Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True '見えるようにする(お約束) '文字列で指定したURLに飛ぶ objIE.Navigate "https://login.yahoo.co.jp/config/login?.src=www&.done=http://www.yahoo.co.jp" '表示終了まで待つ Do While objIE.Busy = True '何もしないループ(笑) DoEvents Loop '項目名を指定して、データをセットする objIE.document.all.UserName.Value = "UserName" objIE.document.all.passwd.Value = "****" objIE.document.Forms(0).submit End Sub --------------------------------------------------------- で、できました。 objIE.document.Forms(0).submitの後には、 ログインが出来ていたら http://www.yahoo.co.jp/ のページへ行き、 ログイン失敗なら https://login.yahoo.co.jp/config/login? のURLが表示され、図のように 「Yahoo! JAPAN IDまたはパスワードが正しくありません。」 と表示されます。 objIE.document.Forms(0).submitの後に MsgBox objIE.URL を入れると 「オブジェクトは、このプロパティまたはメソッドをサポートしていません。(Error 438)」 になり、 MsgBox objIE.Navigate を入れると 「引数の数が一致していません。または不正なプロパティを指定しています。(Error 450)」 になります。 ログイン後のソースをエクセルに書き出す方法も考えましたが、書き出しに時間がかかるのでやめました。 ご教授よろしくお願いします。

  • vbaでIEの操作

    こんばんは。やりたいことができないので教えてください。 vbaで指定のurlを開きたいです。 エクセル2003とIE8です。 Sub test001() Dim ObjIE As Object Set ObjIE = CreateObject("InternetExplorer.application") ObjIE.Visible = True ObjIE.navigate "http://jp.msn.com/" Do While ObjIE.Busy = True '表示させるまで待つ DoEvents Loop End Sub これでIEを立ち上げてURLを開けるのですが これでは新しいウインドウで開いてしまいます。 現在IEを立ち上げていて、上記のコードを実行すると 新たなタブで開きたいですが解決策はありますか? ObjIE.Visible = True が原因かと思い、これを抜かしてみましたが そうすると何も起こりません。 VBAで既に開いているIEの新しいタブでURLを開く方法をご教授ください!よろしくお願いします。

  • VBAによるIE操作について

    VBAでIEを操作し、PHPで開発されているMoodleというe-learningのサイトを操作しようと思っています。 概ね自分の思い通りに動くように作れたのですが、一点だけ問題が発生してしまいました。 (1)Submitのボタンを押して、(2)ページを読み込み待ち、(3)次のページのSubmitのボタンを押すという処理がうまく行きません。 エラーが出るのが、(3)のボタンを押したつもりになって、次の作業に行ってしまっていました。 (2)のページの読み込み待ちがうまく行かず、(3)のボタンを押したつもりになってしまい、次の作業でエラーを起こす、そんな次第です。 (2)のページの読み込みは下記の様に組んでます。 (4)の様に組んでも結果は一緒でした。 あとページが変わるまで、ボタンを押し続ける様に組むと、サーバーが落ちました。(ボタンが無くても押していることができるということだったので、試してみました。コードは残していなかった。) ちなみにボタンを押すコードは(5)です。 PHPの読み込みを待っていないとかそんな原因ではないかと思うのですが、解決できないでしょうか。 (2) Function IEwait(ByRef objIE As Object) Do While objIE.readystate <> 4 DoEvents Loop End Function (4) Do Until objIE.Busy = False WScript.sleep(250) Loop' (5) Public Function IEButtonClick(ByRef objIE As Object, buttonValue As String) Dim objInput As Object For Each objInput In objIE.document.getElementsByTagName("INPUT") If objInput.Value = buttonValue Then objInput.Click Exit Function End If Next End Function

  • VBAからIEの操作

    グーグルをIEで開いてVBA(語句)を検索して見終わったら IEを閉じる作業をしたいのですが、検索窓にVBA(語句)を 入力するところでエラーとなります。初心者ですが、なんとか 勉強したいのでよろしくお願いいたします。 Sub ie_test_Navigate() Dim objIE As Object Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True objIE.Navigate "http://www.google.co.jp/" IE.document.all.q.Value = "VBA" IE.document.all.btnG.Click If MsgBox("IEを閉じますか?", vbYesNo, "終了確認") = vbYes Then objIE.Quit End If Set objIE = Nothing End Sub

  • 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をアクティブ化するようにしたいです。可能ならば方法を教えて欲しいです。

  • VBAでアクティブなIEを操作

    現在VBAでIEを操作しようとしております。 URLやタイトルから指定してIEを操作することはできるようになりました。 今度はデスクトップの最善面にあるIEを操作したいと考えています。 下記を参考にして考えていますが、Hwndプロパティが読み取り専用らしく ハンドルから操作するIEを指定することができません。 http://okwave.jp/qa/q2147057.html そもそもVBAで可能なのかについても よく分からないのですが、恐れ入りますが代案を含め方法があれば教えてください。 ひとまず、煮詰まっていますが、 今残っているコードを載せておきます。 Public Declare Function GetForegroundWindow Lib "user32" () As Long ’--------------- Sub shell_test() Dim objie As Object Dim a as long Set obj = CreateObject("shell.application") a = GetForegroundWindow Debug.Print a End Sub

  • 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で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" に変えても同じです。 何がいけないのでしょうか? アドバイスよろしくお願いします。

  • IE操作 ソース内のjavascriptを表示後、

    VBAでIE操作をしているのですが、 javascriptのURLを踏んだ後に、そのページをオブジェクトに格納して値の取得等をしたいのですが、 うまくいきません。 For Each myObj In objIE.document.all.tags("a") If myObj.href Like "*affiliateUrl1*" Then objIE.navigate myObj.href ' Call IE_wait Exit For End If Next 上記のコードで、 javascript:show_rakuten_linkcd('linkUrl1','imageUrl_S1','imageUrl_M1','title1','price1','reviewCount1','affiliateUrl1'); を見つけて、objIE.navigate myObj.href で、ページを表示することは出来たのですが、 Call IE_wait で 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 をすると、無限ループに入ります。 javascriptでページを表示させても、 objIEに格納されているURLは、javascriptを踏む前の元のページだからと思います。 なので、表示されるまで待つのは手動でやるとしたのですが、 その後、 For Each myObj In objIE.document.all.tags("testarea") If myObj.Name = "code" Then      ’ソース取得 End If Next とやろうとしても、objIEに格納されているURLがjavascriptで表示させているページでない為、 取得できません。 objIE.navigate myObj.href を実行した後に、javascriptのページ(小窓)を格納する方法があれば教えてください。 よろしくお願いします。

専門家に質問してみよう