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ランキング
-
社債を購入しようか迷ってます
-
500,00€とは、500.00ユーロのこ...
-
豪ドルの外貨預金をしているの...
-
投資信託でオーストラリア・ド...
-
外貨を日本円に両替する方法
-
ユーロ円建て債券とは?
-
こんな利率で大丈夫なの?
-
外貨建て債権の売却の時期
-
1ユーロは何円
-
豪ドルMMF積み立て始めたばかり...
-
仕組債という金融商品は安全だ...
-
国債債券型投資信託の基準価格...
-
外債で高利回りで運用するには...
-
使わないお金を増やしたい!
-
ピクテ・グローバルインカム「4...
-
財団法人における仕組債の運用...
-
国内、海外で一番高い定期預金...
-
米国債10年チャートについて
-
フランス社会保障基金発行のニ...
-
外貨定期預金の運用
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
新株予約権付社債の満期償還に...
-
$6.00って日本円でいくらです...
-
51回ソフトバンク債が3月15日...
-
社債を購入しようか迷ってます
-
EXCELのwebクエリが反映されない。
-
トヨタファイナンスオーストラ...
-
ユーロ円建て債券とは?
-
米国債の購入タイミング
-
円安時の投資
-
トヨタモータークレジットコー...
-
新社会人のドル建てMMF
-
60年償還ルールが建設国債に見...
-
500,00€とは、500.00ユーロのこ...
-
米国債10年チャートについて
-
米国株式と為替レートの税金に...
-
メキシコペソ建て債券 年9.4% 2年
-
日銀が儲けた為替差益(?)は...
-
アメリカ国債についてお詳しい...
-
使わないお金を増やしたい!
-
振込依頼書の書き方
おすすめ情報