ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 求大神帮忙改进高考成绩查询代码

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-6-22 19:21 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
是云南省2017年高考成绩的查询,网址http://www.ynzs.cn/2017gkcf/web.html
用来练手
小弟研究了一天,各种学习和改进代码(其实就是把论坛大神们的代码复制粘贴出来学习)
只能做到让VBA自动打开网址,填入考号和密码,然后点击查询按钮出现成绩页面。

后续的提取相应成绩到对应格子就不会做了,求大神指导和改进。。如果可以做成循环就更好了,谢谢

文件在附件里,已经提供了4个尝试用的考号和密码

查分.rar

14.34 KB, 下载次数: 153

TA的精华主题

TA的得分主题

发表于 2018-6-22 22:15 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
见附件,瞎捣鼓的

查分.zip

24.06 KB, 下载次数: 115

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-6-22 23:39 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
非常感谢,但是1楼这个文件执行之后,生成的新工作表中只有格子没有数据,最后的合并步骤会卡住。。。

TA的精华主题

TA的得分主题

发表于 2018-7-4 23:22 | 显示全部楼层
Public Sub cx()
    Dim strURL As String
    Dim strData As String
    Dim xmlHttp As Object
   
   
    'Set xmlHttp = CreateObject("MSXML2.XMLHTTP")
    Set xmlHttp = CreateObject("WinHttp.WinHttpRequest.5.1")
    With xmlHttp
        
        
        .Open "POST", "http://www.ynzs.cn/2017gkcf/check.php?action=query", False
        .setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
        .setRequestHeader "Referer", "http://www.ynzs.cn/2017gkcf/web.html"
        .setRequestHeader "Cookie", "CNZZDATA5457195=cnzz_eid%3D24226550-1530624128-%26ntime%3D1530714216; PHPSESSID=fpi8fa0srsmp2ecqaarlq6ngs7; UM_distinctid=16460561fb3d-01d889be24bdcf4-1d317173-1fa400-16460561fb474"

        .send "user=252651640&pass=888888"
        
        strData = Replace(Replace(Replace(Split(.responseText, "url")(1), "}", ""), """:", ""), """", "")
        strData = Replace(strData, "\", "")
        
        .Open "GET", strData, False
        .send
      
        Debug.Print .responseText
        'Debug.Print strData
    End With
   
   
   
   
End Sub

能获取网页,但有乱码, 也就没在继续,坐等高手

TA的精华主题

TA的得分主题

发表于 2018-7-5 08:23 | 显示全部楼层
mxf21cn 发表于 2018-7-4 23:22
Public Sub cx()
    Dim strURL As String
    Dim strData As String


转个码就可以啦
1.png
       Public Sub cx()
    Dim strURL As String
    Dim strData As String
    Dim xmlHttp As Object
    Dim sHtml$
    Set xmlHttp = CreateObject("WinHttp.WinHttpRequest.5.1")
    With xmlHttp
        .Open "POST", "http://www.ynzs.cn/2017gkcf/check.php?action=query", False
        .setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
        .setRequestHeader "Referer", "http://www.ynzs.cn/2017gkcf/web.html"
        .setRequestHeader "Cookie", "CNZZDATA5457195=cnzz_eid%3D24226550-1530624128-%26ntime%3D1530714216; PHPSESSID=fpi8fa0srsmp2ecqaarlq6ngs7; UM_distinctid=16460561fb3d-01d889be24bdcf4-1d317173-1fa400-16460561fb474"
        .send "user=252651640&pass=888888"
        strData = Replace(Replace(Replace(Split(.responseText, "url")(1), "}", ""), """:", ""), """", "")
        strData = Replace(strData, "\", "")
        .Open "GET", strData, False '
        .send
       sHtml = Replace(ByteToStr(.responsebody, "UTF-8"), "&nbsp", "")
    End With
    Dim js As Object
     Set js = CreateObject("MSScriptControl.ScriptControl")
        js.Language = "JavaScript"
        js.AddObject "rg", [A1]:         js.AddObject "r", [b2]
        js.AddCode "function ka(s){  return s.match(/>(.*?)(?=<\/td>)/gm);};"
        js.AddObject "y", js.CodeObject.ka(sHtml)
        Stop
        js.eval ("rg(1,1)='姓名',rg(1,2)='科目',rg(1,3)='科目成绩',rg(1,4)='百分比等级',rg(2,1)=y[6].replace(/>/,'');")
        js.eval ("k=1,l=y.length;for(i=7;i<l;i =i +3){ for (j=0;j<3;j++){rg(k+1,j+2)=y[i+j].replace(/>/,'').replace(/;/,'');};k++;};")
End Sub
Function ByteToStr(arrByte, strCharset As String) As String
    With CreateObject("Adodb.Stream")
        .Type = 1
        .Open
        .write arrByte
        .Position = 0
        .Type = 2
        .Charset = strCharset
        ByteToStr = .Readtext
        .Close
    End With
End Function

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-7-8 23:44 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Public Sub 云南省公考成绩查询()
'本程序的难点是真实成绩查询网址的获取
     Dim strURL As String
     Dim strData As String
     Dim xmlHttp As Object
     
     
     'Set xmlHttp = CreateObject("MSXML2.XMLHTTP")
     Set oDoc = CreateObject("htmlfile")
     Set xmlHttp = CreateObject("WinHttp.WinHttpRequest.5.1")
     
     With xmlHttp
         
        For rowi = 2 To 5
            .Open "POST", "http://www.ynzs.cn/2017gkcf/check.php?action=query", False
            .setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
            .setRequestHeader "Referer", "http://www.ynzs.cn/2017gkcf/web.html"

            .send "user=" & Cells(rowi, 1) & "&pass=" & Cells(rowi, 2)
         
            strData = Replace(Replace(Replace(Split(.responseText, "url")(1), "}", ""), """:", ""), """", "")
            strData = Replace(strData, "\", "")
         
            .Open "GET", strData, False
            .send
            
            oDoc.body.innerHTML = Replace(ByteToStr(.responsebody, "UTF-8"), "&nbsp;", "")
            Set tr = oDoc.all.tags("Table")(0).Rows
            
            
            Cells(rowi, 4) = tr(1).Cells(0).innerText
            Cells(rowi, 5) = tr(1).Cells(1).innerText
            Cells(rowi, 6) = tr(1).Cells(3).innerText
            Cells(rowi, 7) = tr(2).Cells(1).innerText
            Cells(rowi, 8) = tr(3).Cells(1).innerText
            Cells(rowi, 9) = tr(4).Cells(1).innerText
            Cells(rowi, 10) = tr(5).Cells(1).innerText
            Cells(rowi, 11) = tr(6).Cells(1).innerText
            Cells(rowi, 12) = Split(tr(7).Cells(0).innerText, ":")(1)
     
        Next

     End With

End Sub

Function ByteToStr(arrByte, strCharset As String) As String
     With CreateObject("Adodb.Stream")
         .Type = 1
         .Open
         .write arrByte
         .Position = 0
         .Type = 2
         .Charset = strCharset
         ByteToStr = .Readtext
         .Close
         
     End With
     
End Function
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-6 15:14 , Processed in 0.035697 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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