エクセル上に、HPから天気の情報を取得したクエリテーブルがあります
そのクエリテーブルをVBAを使って更新したいのですが、やり方がわかりません
シート名 天気データ
クエリテーブルは1つ。ほかのシートにもありません
【追記】
目的は最新の天気データを取得すること
方法はVBAでの更新です。上書きでもデータ更新でもかまいません
URL
https://tenki.jp/week/3/
クエリテーブル名で取得するべきなのかと思いましたが、更新毎にに名前が変更するために難しいと思いました。
以下の内容でクエリテーブルを更新できるかと思いましたが、クエリテーブルが存在しないと判別されてしまいます
Sub Macro1()
Dim a As QueryTable
Sheets("天気データ").QueryTables(1).Refresh BackgroundQuery:=False
End Sub
-
クリップを取り消します
-
質問の評価を上げたことを取り消します
-
質問の評価を下げたことを取り消します
checkベストアンサー
+1
データを上の図のようにデータを取得しているのであれば、
データの更新のVBAは、
ActiveWorkbook.Connections("クエリ - 関東・甲信地方の10日間天気26日08:00発表").Refresh
で、動くと思います。
ただ、下図のようなことも可能です。
開くたびに更新するとか、1分が最小値ですが、時間経過で自動更新の機能のあります。
マクロを作る必要はないと思います。
どうしてもマクロにこだわるのなら、こうですね。
WEBの結果(表全体)を 変数 strResult に代入しています。
結果は、複雑なテキストです。
加工が必要になりますね。
Public Sub GetClassNameH2()
Dim IE As InternetExplorer
Dim Doc As HTMLDocument
Dim ieElement As IHTMLElement
Dim strResult As String
Dim strURL As String
strURL = "https://tenki.jp/week/3/"
Set IE = CreateObject("Internetexplorer.Application")
IE.Visible = True
IE.Navigate strURL
Do While IE.Busy = True Or IE.ReadyState < READYSTATE_COMPLETE
DoEvents
Loop
Set Doc = IE.Document
Set ieElement = Doc.getElementById("main-column")
strResult = ieElement.innerText
Sheet1.Range("A1").Value = strResult
IE.Quit
Set ieElement = Nothing
Set Doc = Nothing
Set IE = Nothing
End Sub
投稿
score 334
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 87.80%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正、ベストアンサー選択の依頼