ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

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

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-8-10 08:40 | 显示全部楼层
txh30603866 发表于 2023-8-9 09:54
Sub Get_Weather() '天气温度获取
    Dim xmlHttp As Object '创建对象
    Set xmlHttp = CreateObject ...

谢谢你啦,下标越标界   这句标黄:weather = Replace(Split(Split(Myhtml, "<i class=""wi wi-night-cloudy""> </i>")(1), "</span>")(0), Chr(10), "")

TA的精华主题

TA的得分主题

发表于 2023-8-10 10:27 | 显示全部楼层
1042271867 发表于 2023-8-10 08:40
谢谢你啦,下标越标界   这句标黄:weather = Replace(Split(Split(Myhtml, " ")(1), "")(0), Chr(10), " ...

那没道理啊,我这正常的

TA的精华主题

TA的得分主题

发表于 2023-8-10 10:30 | 显示全部楼层
1042271867 发表于 2023-8-10 08:40
谢谢你啦,下标越标界   这句标黄:weather = Replace(Split(Split(Myhtml, " ")(1), "")(0), Chr(10), " ...

OrientDate = "2023/5/1"‘这里是指定获取的日期
HtmlDate = Format(OrientDate, "YYYYMM")’这里是转换格式找到对应的月份网站
StrDate = Format(OrientDate, "YYYY-MM-DD")'这里是转换格式能跟网站上的日期匹配上
你是不是自己改了下,看看改对了没有

TA的精华主题

TA的得分主题

发表于 2023-8-10 10:47 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
1042271867 发表于 2023-8-10 08:40
谢谢你啦,下标越标界   这句标黄:weather = Replace(Split(Split(Myhtml, " ")(1), "")(0), Chr(10), " ...

Sub Orient_Weather() '天气温度获取
    OrientDate = "2023/7/9"
    HtmlDate = Format(OrientDate, "YYYYMM")
    HtmlMonth = Format(OrientDate, "YYYY-MM")
    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
   
    AllDate = Split(Myhtml, "<div class=""th200"">" & HtmlMonth & "-")
    For n = 1 To UBound(AllDate)
        ThisData = Split(AllDate(n), " 星期")(0)
        ThisData = HtmlMonth & "-" & ThisData
        weather = Split(Split(Myhtml, "<div class=""th200"">" & ThisData)(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 ThisData & " 当时星期:" & Weathers(0)
        Debug.Print ThisData & " 最高温度:" & Weathers(1)
        Debug.Print ThisData & " 最低温度:" & Weathers(2)
        Debug.Print ThisData & " 天气信息:" & Weathers(3)
        Debug.Print ThisData & " 风向风级:" & Weathers(4)
        
    Next n
End Sub
完整的获取每个月每天所有天气的代码,你自己把年份月份做个遍历就行了,目前来说还是好用的

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-8-11 07:55 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
txh30603866 发表于 2023-8-10 10:47
Sub Orient_Weather() '天气温度获取
    OrientDate = "2023/7/9"
    HtmlDate = Format(OrientDate, ...

正常运行,但运行后没有输出结果。我用的是WPS、EXCEL2007测试的
1.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-8-11 07:56 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

Sub Get_Weather() '天气温度获取
    Dim xmlHttp As Object '创建对象
    Set xmlHttp = CreateObject("MSXML2.XMLHTTP")
    xmlHttp.Open "GET", "https://www.weaoo.com/zhenjiang-jurongshi-4833.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

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-8-11 07:56 | 显示全部楼层
这个代码可以获取温度,谢谢



Sub Get_Weather() '天气温度获取
    Dim xmlHttp As Object '创建对象
    Set xmlHttp = CreateObject("MSXML2.XMLHTTP")
    xmlHttp.Open "GET", "https://www.weaoo.com/zhenjiang-jurongshi-4833.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

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-8-11 08:00 | 显示全部楼层
1042271867 发表于 2023-8-11 07:55
正常运行,但运行后没有输出结果。我用的是WPS、EXCEL2007测试的

这个能够获取当日天气温度,谢谢
Sub Get_Weather() '天气温度获取
    Dim xmlHttp As Object '创建对象
    Set xmlHttp = CreateObject("MSXML2.XMLHTTP")
    xmlHttp.Open "GET", "https://www.weaoo.com/zhenjiang-jurongshi-4833.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

TA的精华主题

TA的得分主题

发表于 2023-8-11 08:19 | 显示全部楼层
1042271867 发表于 2023-8-11 08:00
这个能够获取当日天气温度,谢谢
Sub Get_Weather() '天气温度获取
    Dim xmlHttp As Object '创建对 ...

你不是获取过往天气的吗。。怎么在研究当日天气的代码。
wps可能稍微代码有点不一样,对网站的解析肯定是一样的。

TA的精华主题

TA的得分主题

发表于 2023-8-11 13:34 | 显示全部楼层
上班划水,从网站导出天所再查询

天气测试.rar

322.73 KB, 下载次数: 77

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

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

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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