表示上ページが移動しているにも関わらず、移動後のページエレメントが読めない


Message#から前件を

日から 前を
Q&A掲示板へ

最新20件 最新50件 最新100件 最新200件 200件以前
昨日以降(0) 2日前以降(0) 3日前以降(0) 4日前以降(0) 5日前以降(0)


Message#1 2017年5月30日(火)13時57分
From: 初心者
返事 削除 変更
IE制御の初心者ですが、下記の通り基本的なところで困っています。
@ログインページからID、パスワードを入力し、ログインボタンをクリックして、”管理一覧ページ”へ移動
Aその後、”管理一覧ページ”にあるリンクURLをクリックし、”情報管理ページ”に移動
させたく、この”VBAのIE制御”で教えてもらったコードで以下の通り記述しています。
ところが、”管理一覧ページ”に表示が移動しているにも関わらず、”情報管理ページ”へのリンクURLを見つけられない。ステップモードで”管理一覧ページ”に表示が変わったあとにステップで進めたが、見つけられなかった。そのため、ここで全エレメントを読んでみたところ、表示が”管理一覧ページ”になっているにもかかわらず、エレメント自体は移動前の”ログインページ”のものだった。
ページ移動前に読み込んでいるのかとも疑ったが、 Call tagClickのサブルーチン内にWebページ完全読込待機処理サブルーチン「ieCheck」も入れてあるので、問題ないのではと考えています。
どうすれば移動後のエレメントが読めるのか、アドバイスをお願いします。出来れば修正するコード自体を具体的にお教えいただけると助かります。
よろしくお願いいたします。

ーーーー以下、コードーーーーーー
Sub sample()
'メイン処理
Dim objIE As InternetExplorer
Dim objLink As Object
'InternetExplorerでログインページを起動
Call ieView(objIE, "http://www.XXXXXXXX") '<---- ログインURL
'ログインIDをテキストボックスに入力
objIE.document.getElementsByName("login_id")(0).Value = "XXXX" '<---- ログインID
'パスワードボックスに値を入力
objIE.document.getElementsByName("login_pw")(0).Value = "XXXX” '<---- パスワード
'ログインボタンを選択、管理一覧ページへ移動
Call tagClick(objIE, "button", "ログイン")
For Each objLink In objIE.document.Links
If InStr(objLink.outerHTML, "情報管理") > 0 Then
objLink.Click
Call ieCheck(objIE)
Exit For
End If
Next
(このあとの処理省略)

ーー以下、サブルーチンーーーーーーーーーーーーー
'@指定URLを表示するサブルーチン「ieView」
Sub ieView(objIE As InternetExplorer, _
urlName As String, _
Optional viewFlg As Boolean = True)
'IE(InternetExplorer)のオブジェクトを作成する
Set objIE = CreateObject("InternetExplorer.Application")
'IE(InternetExplorer)を表示・非表示
objIE.Visible = viewFlg
'指定したURLのページを表示する
objIE.navigate urlName
'IEが完全表示されるまで待機
Call ieCheck(objIE)
End Sub
ーーーーーーーーーーー
'AWebページ完全読込待機処理サブルーチン「ieCheck」
Sub ieCheck(objIE As InternetExplorer)
Dim timeOut As Date
timeOut = Now + TimeSerial(0, 0, 20)
Do While objIE.Busy = True Or objIE.readyState <> 4
DoEvents
If Now > timeOut Then
objIE.Refresh
timeOut = Now + TimeSerial(0, 0, 20)
End If
Loop
timeOut = Now + TimeSerial(0, 0, 20)
Do While objIE.document.readyState <> "complete"
DoEvents
If Now > timeOut Then
objIE.Refresh
timeOut = Now + TimeSerial(0, 0, 20)
End If
Loop
End Sub
ーーーーーーーーーーーーー
Sub tagClick(objIE As InternetExplorer, _
tagName As String, _
tagStr As String)
'Bボタンクリックするサブルーチン
Dim objTag As Object
'タグをクリック
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

最新20件 最新50件 最新100件 最新200件 200件以前
昨日以降 2日前以降 3日前以降 4日前以降 5日前以降
VBAのIE制御についてのQ&A掲示板

↑エクセルVBAのIE(InternetExplorer)操作で分からない事があればこちらの掲示板よりご質問ください^^

ExcelのVBA初心者入門

↑こちらはExcelのVBAをマスターできるよう初心者向けのエクセルVBA入門コンテンツになります^^

VBAのIE制御入門RSS

RSSフィードを登録すると最新記事を受け取ることができます。

VBAIE操作のスカイプレッスン

VBAでIE(InternetExplorer)制御の準備

エクセルVBAでIE制御の応用編

こちらでは、エクセルVBAで実際に作成したIE(InternetExplorer)制御ツールをまとめています。自動ログインや情報収集など具体的に解説しています。IE(InternetExplorer)制御をされる方は参考にしてください。

【ダウンロード】IE操作に便利なツール

こちらでは、これまでに紹介したIE(InternetExplorer)操作で便利な機能をツール化しています。無償でダウンロードできますので、目的に合わせたご利用ください。

IEオブジェクトのメソッド・プロパティ

こちらでは、IE(InternetExplorer)オブジェクトのメソッド・プロパティをまとめています。

IE操作に利用されているVBA関数

こちらでは、エクセルVBAのIE(InternetExplorer)操作で利用されたVBA関数をまとめています。

IE操作に利用されているステートメント

こちらでは、エクセルVBAのIE(InternetExplorer)操作で利用されたステートメントをまとめています。ExcelのVBAで基本的な部分になりますので、しっかり理解しましょう。

IE(InternetExplorer)制御のVBAコード

こちらでは、これまでに作成したIE(InternetExplorer)操作で役立つサブルーチンをまとめています。
全てをコピーする必要はありませんが、目的に合わせたサブルーチンをご利用ください。

ExcelのVBAで作成した役立つVBAコード

こちらでは、IE(InternetExplorer)制御の利用だけでなく、Excel全般で利用できるVBAコードです。エクセルVBAで役に立つものばかりですので、ご利用ください。

dmb.cgi Ver. 1.068
Copyright(C) 1997-2014, hidekik.com