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ランキング
-
トヨタファイナンスオーストラ...
-
日銀が儲けた為替差益(?)は...
-
郵便為替を紛失してしまいした...
-
野村証券で外債等の購入での外...
-
外国債の賢い買い方
-
円安時の投資
-
米国債の購入タイミング
-
$6.00って日本円でいくらです...
-
長期の米国債購入について。 残...
-
海外債券と円安円高
-
手持ちの外貨(US$) 運用方法
-
決算時における為替予約処理
-
スイスプライベートバンクにつ...
-
外貨建個人年金保険か外貨MMFか
-
南アフリカランド建債券について
-
インドネシア国債について
-
インド株価は戻ってきているの...
-
外国債券(既発債)について教...
-
外貨定期預金
-
外貨の有利な保管のしかた
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
$6.00って日本円でいくらです...
-
SBI証券にて米国株を売却したら...
-
トヨタファイナンスオーストラ...
-
社債を購入しようか迷ってます
-
米国株を買う際は外貨決済のほ...
-
トヨタモータークレジットコー...
-
メキシコペソ建て債券 年9.4% 2年
-
外国株の為替差益の税金につい...
-
SBI証券にて米国株を売却し、口...
-
外貨預り金で外貨建商品購入時...
-
世界銀行南アフリカランド債
-
日銀が儲けた為替差益(?)は...
-
新生銀行の仕組定期(パワード...
-
長期の米国債購入について。 残...
-
江戸時代の頃のひとの旅行って...
-
米国債の購入タイミング
-
外貨建て債権を償還前に
-
EXCELのwebクエリが反映されない。
-
ソフトバンクグループ劣後債に...
-
円安時の投資
おすすめ情報