[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『webスクレイピング』(HY)
web上のデータを取得するマクロについて質問です。
家で使用しているPCでは正しくデータをとってくることができるのですが、
会社のPCでマクロを実行するとマクロがオートメーションエラーになります。
家のPC: Excel2016 os:IE11 windows10
会社のPC:Excel2013 os:IE11 windows10
どのような原因が考えられるでしょうか。
< 使用 Excel:Excel2013、使用 OS:Windows10 >
# これだけの情報で原因を特定するのは困難な気がします。
(γ) 2018/04/07(土) 12:48
Option Explicit
Sub IE操作()
Dim objTable As HTMLTable
Dim objTable2 As HTMLTable
Dim objTable3 As HTMLTable
Dim x As Integer
Dim y As Integer
Dim p As Integer
Dim q As Integer
'コード1|インターネットに接続してブラウザを開く
Dim objIE As InternetExplorer Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True
'コード2|インターネットの特定のページを開く
objIE.navigate "https://www.boj.or.jp/about/services/tame/tame_rate/kijun/kiju" & Range("a5") & ".htm/"
Call IEWait(objIE)
Call WaitFor(3) '3秒停止
Set objTable = objIE.document.getElementsByTagName("table")(0)
'1番目のtableタグにあるセルをExcelに移し変える
'変数yに0を代入、tableの行数まで繰り返す
For y = 0 To objTable.Rows.Length - 1
'変数xに1を代入、tableの列数まで繰り返す
For x = 0 To objTable.Rows(y).Cells.Length - 1
'Excelのx列、y行の位置にtableタグのx+1列、y+1行のセルの値を入れる
Worksheets("Rate1").Cells(y + 1, x + 1).Value = objTable.Rows(y).Cells(x).innerText Next Next
Set objTable2 = objIE.document.getElementsByTagName("table")(1)
'2番目のtableタグにあるセルをExcelに移し変える
'変数pに0を代入、tableの行数まで繰り返す
For p = 0 To objTable2.Rows.Length - 1
'変数qに1を代入、tableの列数まで繰り返す
For q = 0 To objTable2.Rows(p).Cells.Length - 1
'Excelのp列、q行の位置にtableタグのp+1列、q+1行のセルの値を入れる
Worksheets("Rate2").Cells(p + 1, q + 1).Value = objTable2.Rows(p).Cells(q).innerText
'変数aの値をプラス1することで次のセルに進む
Next Next
Set objTable3 = objIE.document.getElementsByTagName("p")(5)
Worksheets("Rate3").Cells(1, 1).Value = objTable3.innerText
'objIEに代入したInternetExplorerを閉じる
objIE.Quit
'objIEを空にする
Set objIE = Nothing
Worksheets("rate1").Range("1:100").RowHeight = 18.75
End Sub
'''---コード4|IEを待機する関数
Function IEWait(ByRef objIE As Object)
Do While objIE.Busy = True Or objIE.readyState <> 4 DoEvents Loop End Function
'コード5|指定した秒だけ停止する関数
Function WaitFor(ByVal second As Integer)
Dim futureTime As Date futureTime = DateAdd("s", second, Now) While Now < futureTime DoEvents Wend End Function
(HY) 2018/04/11(水) 10:24
これはなんなんでしょうかね。。
下記が関係あるかも。
IE の保護モードの違いによって整合性レベルの切り替えの有無が変わりオートメーションの操作に影響が出る場合がある - デクノスティック
http://dechnostick.hatenablog.com/entry/2015/01/27/032113
(hatena) 2018/04/11(水) 22:02
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.