
EXCELのwebクエリ機能を使ってリアルタイムの為替情報を表に反映させたく、以下のページをみながらやってみました。
参照:http://www.hello-pc.net/howto-excel/exc_rate/
ですが、表が反映されません。(https://gyazo.com/fab14a26e303fdde0f25fd74ae332055)
その際に図のようなエラー表示がされました。
どうすれば反映されるようになりますでしょうか?
ご助言いただければ幸いです。

No.3ベストアンサー
- 回答日時:
スクリプトエラーは、以前は、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
'//

ありがとうございます。
すみません、マクロやVBAについての知識が全く無く、それらを調べておりベストアンサーを選択するのを忘れてしまっておりました。。大変申し訳ありませんでした。。
ご相談なのですが、もし可能であれば、これらを反映したエクセルデータをお送りいただくことはできないでしょうか・・。firestorage等にアップいただけると大変助かります。。
あつかましいお願いをしてしまい申し訳ありません。何卒ご検討の程、よろしくお願いいたします。
No.2
- 回答日時:
私が見た限りでは、サイトが常に更新を続けているので、Webクエリでは、取れないような仕組みになっていると思うです。
IE を立ち上げて、その日経の為替のページの為替欄を右クリックしてみると、「要素の検査(分析)」の、マウスメニュー(コンテクスト)が出てきません。おまけに、今、私がしばらく開発のために開けていたら、自動更新が停止されてしまいました。それで、Refreshコマンドをかけたら、IEがハングしてしまいました。
それで、いろいろ考えた挙句、マクロのIEオブジェクトで取得する方法しか思いつきませんでした。他の為替のページで試したらいかがでしょうか。ただ、こちらのマクロは、繰り返しを頻繁にすれば別かもしれまんせが、決して、サーバーの負担など掛けはしていないはずです。
これは、為替の大きな文字の部分(中心レート?)だけです。
'// 標準モジュール
Sub OnTimeGetExRates()
Dim objIE As Object ''InternetExplorer 'Microsoft Internet Control
Dim ChgRates As Variant
Dim Countries As Variant
Dim strURL As String
Dim i As Long
Dim buf As Variant
'Set objIE = New InternetExplorer
Set objIE = CreateObject("InternetExplorer.Application")
On Error GoTo ErrHandler
strURL = "http://nikkei225jp.com/fx/"
Countries = Array("ドル円", "ユーロ円", "ポンド円", "スイスフラン円", _
"豪ドル円", "ニュージーランド円", "ユーロドル", "ドルインデックス")
ChgRates = Array("V511", "V514", "V515", "V513", "V516", "V517", "V523", "V501") '"V518" 不明
objIE.Navigate2 strURL
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(ChgRates(i - 1)).innerText
If Cells(i, 1).Value = "" Then
Cells(i, 1).Value = Countries(i - 1)
End If
Cells(i, 2).Value = buf
On Error Resume Next
Next i
End With
ErrHandler:
''objIE.Refresh ''これは、一応禁止にしておきます。
If Err.Number <> 0 Then
MsgBox Err.Number & " :" & Err.Description
End If
objIE.Quit
Set objIE = Nothing
Beep
End Sub
'//
取得後の画面

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Web・クリエイティブ EXCELでweb内の表を取込む方法を教えてください 2 2023/04/01 11:28
- Excel(エクセル) Excel シート複数 金額日計表と日付 簡単にシートコピーしたら前日の残高と日付を変更させたい 1 2022/07/15 22:10
- Excel(エクセル) エクセル・スプレッドシートで、一定数を超えたらゼロから再累計する方法 8 2022/05/28 03:52
- Excel(エクセル) 重複したデータ(空白は除く)のVBA表記について 4 2022/08/15 07:28
- Visual Basic(VBA) Excelマクロ Application.Run 5 2023/06/17 15:16
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
- その他(Microsoft Office) Excelで時間計算(負) 8 2023/02/26 05:47
- Excel(エクセル) Excel 表の作成について 3 2022/06/16 12:15
- Windows 10 プロファイルエラーについて 2 2022/12/16 09:31
- Excel(エクセル) エクセルについて教えてください。 1 2023/03/03 08:38
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
個人財産を守るために
-
毎月10万円を1年間だけ貯金...
-
ストリップ債
-
ETNは裁定取引に使われますか?...
-
豪ドルの外貨預金をしているの...
-
5年後に住宅購入の頭金にする...
-
国際為替について
-
信託銀行とはどのような業務を...
-
ETFの取引所価格と基準価額との...
-
米ドル建て債券 残存期間1年未...
-
NISA口座の投資信託の「繰...
-
500,00€とは、500.00ユーロのこ...
-
エクセルで通貨の換算
-
USドルの運用はどの証券会社・...
-
外債と税金
-
MMFから米国ゼロクーポンへリレ...
-
1ドル115円になるでしょうか
-
国債等を返さなかったら?
-
エクセル2007で3軸の折れ...
-
海外債券と円安円高
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
トヨタファイナンスオーストラ...
-
為替手数料について
-
振込依頼書の書き方
-
EXCELのwebクエリが反映されない。
-
500,00€とは、500.00ユーロのこ...
-
豪ドルMMF積み立て始めたばかり...
-
米国債の購入タイミング
-
長期(5年間)の為替予約を取引銀...
-
SBI証券にて米国株を売却したら...
-
長期の米国債購入について。 残...
-
エクセルで通貨の換算
-
$6.00って日本円でいくらです...
-
外貨建てディスカウント債の償...
-
ハイパーインフレ時に日本で資...
-
外貨預金が増える→円高になるに...
-
野村証券で外債等の購入での外...
-
世界銀行南アフリカランド債
-
米ゼロクーポン? 豪ドル建て...
-
新生銀行の、外貨預金を、検討...
-
トヨタモータークレジットコー...
おすすめ情報