質問: excelのwebクエリが反映されない。 excelのwebクエリ機能を使ってリアルタイムの為替情報を表に反映させたく、以下のページをみながらやってみました。 参照:http://www.hello-pc.net/howto-excel/exc_rate/ ですが、表が反映されません。(https://gyazo.com/fab14a26e303fdde0f25fd74ae332055) その際に図のようなエラー表示がされました。 どうすれば反映されるようになりますでしょうか? ご助言いただければ幸いです。
回答: スクリプトエラーは、以前は、ieのオプションで修正できたのですが、今は、それをやっても無理のようです。もうここの書き込みは、顧みられることもないかもしれませんが、#2で書いたものが中途半端ですから、完成形を作っておきます。 http://nikkei225jp.com/fx/ (vbaコード内で文字化けする可能性がありますので、再度、登録しなおしてください strurl = http://nikkei225jp.com/fx/ "url"をコーテーションマークで囲んでください。) 取得先は、『日経の為替チャート』(他も試みましたが、失敗しました。) このマクロは、サーバーに負担を掛けるようなものではありませんが、ループして使うのは問題が残ると思います。なるべく、pc自体にも負担を掛けないためには、参照設定をしたほうがよいと思います。(その意味が分かる方のみに限ります) なお、サイトが更新されれば、取得できなくなる可能性がありますから、このコードは、2016/5/25のタイム・スタンプということにしておきます。 '// sub ontimegetexrates() dim objie as object ''as internetexplorer 'microsoft internet control:参照設定 dim chgrates as variant dim countries as variant dim strurl as string dim i as long, j as long, k as long dim buf as variant dim arbuf(5) as variant dim kinds as variant dim stcell as range '20160525 '最初の書き出しセルの場所 set stcell = range("a2") set objie = createobject("internetexplorer.application") 'set objie = new internetexplorer '事前バインディングの場合 on error goto errhandler ''************** ''取得先 at may 25,2016/ no guarantee after the future. strurl = "http://nikkei225jp.com/fx/" ''************* countries = array("ドル円", "ユーロ円", "ポンド円", "スイスフラン円", _ "豪ドル円", "ニュージーランド円", "ユーロドル", "ドルインデックス") chgrates = array("511", "514", "515", "513", "516", "517", "523", "501") '"v518" 不明 kinds = array("v", "h", "l", "c", "z", "t") objie.navigate2 strurl j = 1 do while objie.busy or objie.readystate <> 4: doevents: loop with objie.document for i = 1 to ubound(chgrates) + 1 on error resume next buf = "" buf = .getelementbyid("v" & chgrates(i - 1)).innertext for k = 0 to 5 arbuf(k) = .getelementbyid(kinds(k) & chgrates(i - 1)).innertext next k if stcell.cells(i, 1).value = "" then stcell.cells(i, 1).value = countries(i - 1) end if for k = 0 to 5 stcell.cells(i, k + 2).value = arbuf(k) next k on error resume next next i end with errhandler: if err.number <> 0 then msgbox err.number & " :" & err.description end if objie.quit set objie = nothing beep end sub '//