VBAを用いてIEを保存する方法
未読分:2件
昨日以降(0) 2日前以降(0) 3日前以降(0) 4日前以降(0) 5日前以降(0)
近田 伸矢, 植木 悠二, 上田 寛
IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。
Message#2 2016年6月2日(木)17時27分 From: ジャッカル | 返事 削除 変更 |
利用規約の同意のページ(1つ前のページ)がコピーされているってことは前と同じでページの読み込みが完全に終了しないまま次の処理にうつったってことじゃないかな? もうちょっと時間とめてみるとか > > VBAを用いてIEを保存する方法を模索しているものです。エクセルにある値を検索窓に挿入→検索ボタンをクリック→利用規約の同意ボタンをクリック→検索結果の表示→その結果をエクセルにコピーし、保存するマクロを組んでおります。以下のコードですが、エクセルに結果をコピーすることはできましたが、コピーされているものが検索結果ではなく、利用規約の同意のページ(1つ前のページ)がコピーされています。どのようにしたら改善できるかご教授いただけたら幸いです。よろしくお願いいたします。 > > > Public Sub IE基本_個体識別番号検索成功() > > > > > > Dim ie As New InternetExplorer > > > > > > ie.navigate "https://www.id.nlbc.go.jp/top.html" > > > > > > ie.Visible = True > > > > > > While ie.Busy = True And ie.readyState < READYSTATE_COMPLETE > > > > > > DoEvents > > > > > > Wend > > > > > > Dim doc As HTMLDocument > > > > > > Set doc = ie.document > > > > > > Dim sel As IHTMLSelectElement > > > > > > Dim inp As IHTMLInputElement > > > > > > Set objInpTxt = ie.document.getElementsByName("txtIDNO")(0) > objInpTxt.Value = Range("A1").Value > > > > > > Dim btn As HTMLInputElement > > > > > > Set btn = doc.getElementsByTagName("input")(0) > > > > > > btn.form.submit > > > > > > While ie.Busy = True And ie.readyState < READYSTATE_COMPLETE > > > > > > DoEvents > > > > > > Wend > > > > > > Application.Wait Now + TimeValue("00:00:05") > > > > > > > > Set btn = doc.getElementsByTagName("input")(0) > > > > > > btn.form.submit > > Application.Wait Now + TimeValue("00:00:05") > > Dim objWb As Workbook > > Set objWb = Workbooks.Add > > Set tbl = ie.document.getElementsByTagName("table")(0) > > Set tr = tbl.getElementsByTagName("tr") > > > Set th = tr(0).getElementsByTagName("TH") > > For c = 1 To th.Length > Cells(1, c).Value = th(c - 1).innerText > Next > > For r = 2 To tr.Length > > Set td = tr(r - 1).getElementsByTagName("td") > > For c = 1 To td.Length > > Cells(r, c).Value = td(c - 1).innerText > > Next > > Next > > Dim fileName As String > > fileName = Range("A15") > > ActiveWorkbook.SaveAs fileName > > > End Sub |
Message#1 2016年5月31日(火)22時22分 From: 初心者 | 返事 削除 変更 |
VBAを用いてIEを保存する方法を模索しているものです。エクセルにある値を検索窓に挿入→検索ボタンをクリック→利用規約の同意ボタンをクリック→検索結果の表示→その結果をエクセルにコピーし、保存するマクロを組んでおります。以下のコードですが、エクセルに結果をコピーすることはできましたが、コピーされているものが検索結果ではなく、利用規約の同意のページ(1つ前のページ)がコピーされています。どのようにしたら改善できるかご教授いただけたら幸いです。よろしくお願いいたします。 Public Sub IE基本_個体識別番号検索成功() Dim ie As New InternetExplorer ie.navigate "https://www.id.nlbc.go.jp/top.html" ie.Visible = True While ie.Busy = True And ie.readyState < READYSTATE_COMPLETE DoEvents Wend Dim doc As HTMLDocument Set doc = ie.document Dim sel As IHTMLSelectElement Dim inp As IHTMLInputElement Set objInpTxt = ie.document.getElementsByName("txtIDNO")(0) objInpTxt.Value = Range("A1").Value Dim btn As HTMLInputElement Set btn = doc.getElementsByTagName("input")(0) btn.form.submit While ie.Busy = True And ie.readyState < READYSTATE_COMPLETE DoEvents Wend Application.Wait Now + TimeValue("00:00:05") Set btn = doc.getElementsByTagName("input")(0) btn.form.submit Application.Wait Now + TimeValue("00:00:05") Dim objWb As Workbook Set objWb = Workbooks.Add Set tbl = ie.document.getElementsByTagName("table")(0) Set tr = tbl.getElementsByTagName("tr") Set th = tr(0).getElementsByTagName("TH") For c = 1 To th.Length Cells(1, c).Value = th(c - 1).innerText Next For r = 2 To tr.Length Set td = tr(r - 1).getElementsByTagName("td") For c = 1 To td.Length Cells(r, c).Value = td(c - 1).innerText Next Next Dim fileName As String fileName = Range("A15") ActiveWorkbook.SaveAs fileName End Sub |
昨日以降 2日前以降 3日前以降 4日前以降 5日前以降