下記の質問をいただく。
>IE使用時にページ移動後のHTMLDocumentを再取得したいのですができません。
>ご教授いただけないでしょうか??
>IE使用時にページ移動後のHTMLDocumentを再取得
ですが、
通常は、移動後もそのまま使えるので、
※逆に、移動前のページのデータは書き換えられているので使えない
↑何言ってんだか、意味不明・・・
パターン1:ページ表示後に検索データを入れて、検索、検索結果を処理
https://www.youtube.com/watch?v=_L2v_i-UJsY
www.youtube.com
'検索データをセットする
objIE.document.all("q").Value = "movie:w560"
'検索ボタンを押す
'INPUTのタグを探す
Dim objINPUT As Object
For Each objINPUT In objIE.document.getElementsByTagName("input")
Debug.Print objINPUT.Value
'検索ボタンを見つけて押す
If objINPUT.Value = "検索" Then
objINPUT.Click 'クリック処理
DoEvents
Exit For
End If
Next
↑クリックあと、ページが変わります。
すると、
objIE.document が 自動的に次のページに更新されるので、
>IE使用時にページ移動後のHTMLDocumentを再取得
していると思います。
よくあるエラーが、.Click 'クリック処理
検索をクリック後にページが切り替わり、
HTMLDocumentが再構成されるまえに処理をすると、エラーになったりします。
Call IE_WAIT(objIE) '検索終了待つ
なので、ページ待ち後には、objIE.documentの中身が現在のページに変わっているので、
次のページで、編集ボタンを探して押す
'編集処理を押す 'INPUTのタグを探す Dim objA As Object For Each objA In objIE.document.getElementsByTagName("a") Debug.Print objA.href 'リンク先URL entry=を見つけて押す If InStr(objA.href, "entry=") > 0 Then objA.Click 'クリック処理 Exit For End If Next
↑おしたら、また、表示を待つ
Call IE_WAIT(objIE) '編集画面の起動を終了待つ
すると、objIE.documentの中身が現在のページ 次の編集ページに変わっているので
'データをセットする
objIE.document.all("body").Value = Replace(objIE.document.all("body").Value, ":movie:w560", ":embed:cite")
'更新ボタンを押す
objIE.document.all("submit-button").Click '更新ボタンをクリック
など、処理を行ってます。
いろいろ言ってますが・書いてますが、
質問の意味が違うような気がしてきた・・・
サンプルコードは
ken3code.hatenablog.jp
です
質問の意味を私が勘違いしたような気がしますが、
解決の糸口となれば幸いです。 三流プログラマー Ken3