ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 3627|回复: 34

[求助] 怎么用VBA进行历史天气查询

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-8-9 08:29 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
各位老师:我附件中代码只能实现对当月的历史天气查询(网址:  http://tianqi.2345.com/wea_history/60308.htm ),此代码也是从这个网上找到的。现在我想实现查询本年度的历史天气(1月到本月的),怎么用VBA进行查询呢,谢谢您!

历史天气网页抓取.rar

26.77 KB, 下载次数: 72

TA的精华主题

TA的得分主题

发表于 2023-8-9 09:31 | 显示全部楼层
看着代码咋这么熟悉呢?从老山羊头那嫖的嘛?

TA的精华主题

TA的得分主题

发表于 2023-8-9 09:54 | 显示全部楼层
Sub Get_Weather() '天气温度获取
    Dim xmlHttp As Object '创建对象
    Set xmlHttp = CreateObject("MSXML2.XMLHTTP")
    xmlHttp.Open "GET", "https://www.weaoo.com/nantong-haimenshi-417.html", False '发送请求
    xmlHttp.send
    Do While xmlHttp.ReadyState <> 4 '等待响应
    DoEvents
    Loop
    Dim Myhtml As String
    Myhtml = xmlHttp.responseText '得到请求数据
    Dim weather As String
    weather = Replace(Split(Split(Myhtml, "<i class=""wi wi-night-cloudy""> </i>")(1), "</span>")(0), Chr(10), "")
    Weathers = Split(Replace(weather, " ", ""), "/")
    MsgBox ("今日温度:" & Weathers(0))
End Sub

Sub Orient_Weather() '天气温度获取
    OrientDate = "2023/5/1"
    HtmlDate = Format(OrientDate, "YYYYMM")
    StrDate = Format(OrientDate, "YYYY-MM-DD")
    Dim xmlHttp As Object '创建对象
    Set xmlHttp = CreateObject("MSXML2.XMLHTTP")
    xmlHttp.Open "GET", "https://lishi.tianqi.com/nantong/" & HtmlDate & ".html", False '发送请求
    xmlHttp.send
    Do While xmlHttp.ReadyState <> 4 '等待响应
    DoEvents
    Loop
    Dim Myhtml As String
    Myhtml = xmlHttp.responseText '得到请求数据
    Dim weather As String
    weather = Split(Split(Myhtml, "<div class=""th200"">" & StrDate)(1), "</li>")(0)
    Weathers = Split(weather, "<div class=""th140"">")
    For i = 0 To UBound(Weathers)
        Weathers(i) = Split(Weathers(i), "</div>")(0)
    Next i
    Weathers(0) = Replace(Weathers(0), " ", "") '星期去除前后空格
    Debug.Print "当前日期当时星期:" & Weathers(0)
    Debug.Print "当前日期最高温度:" & Weathers(1)
    Debug.Print "当前日期最低温度:" & Weathers(2)
    Debug.Print "当前日期天气信息:" & Weathers(3)
    Debug.Print "当前日期风向风级:" & Weathers(4)
End Sub
自行测试,可以指定日期获得当前天气

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-8-9 10:37 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
这个VBA不太好弄的样子,我的话就模拟手动打开浏览器操作吧

TA的精华主题

TA的得分主题

发表于 2023-8-9 12:03 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
20230809_120244.rar (306.25 KB, 下载次数: 121)

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-8-9 12:30 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
http://tianqi.2345.com/Pc/GetHistory?areaInfo[areaId]=60308&areaInfo[areaType]=2&date[year]=2023&date[month]=1
循环即可 可以搞

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-8-9 13:43 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2023-8-9 14:10 | 显示全部楼层
本帖最后由 perfect131 于 2023-8-9 14:20 编辑

可以搞

1.jpg


批量
2.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-8-9 14:32 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2023-8-9 14:48 | 显示全部楼层
1042271867 发表于 2023-8-9 14:32
能将代码贴上来吗,谢谢啦

当然可以,小钱接您大事,有偿联系
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-19 13:37 , Processed in 0.049594 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表