ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[已解决] 用EXCEL实现网页上批量查询发票(谢谢lsftest,xmlhttp,IE/webbrowser,webquery均做出)

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2011-2-12 18:37 | 显示全部楼层
本帖已被收录到知识树中,索引项:网页交互
原帖由 rjg 于 2011-2-11 23:47 发表
验证网址:http://www.12366.ha.cn/server/fpzwcx/index.jsp#tt
测试:发票代码:141001050062     发票号码:29807374
方式:webQuery

谢谢!

楼主短信收到。。。
呵呵。。。这个有点意思了。。。
等会儿我试试。。。搞完这个,也应该是时候又再暂别eh了。。。。

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-2-12 18:40 | 显示全部楼层

回复 82楼 lsftest 的帖子

嘿嘿,谢谢了。
又麻烦您老人家出来救场。
谢谢老师了。新年快乐:)

[ 本帖最后由 xmyjk 于 2011-2-12 18:44 编辑 ]

TA的精华主题

TA的得分主题

发表于 2011-2-12 19:40 | 显示全部楼层
  1. Sub chaxun()
  2. Dim xmlhttp As Object
  3. Dim getpage As String
  4. Set xmlhttp = CreateObject("Microsoft.XMLHTTP")
  5. xmlhttp.Open "post", "http://www.12366.ha.cn//dwr/plaincall/callejb.getResultsetFpzw.dwr", False
  6. a = "callCount=1" & Chr(10)
  7. a = a + "httpSessionId=NWznZnhZ5GKxW62RpQhnj7hyn8VKJCGx1VmvCvyT75BQxYbG2yvD!-1138754356!1297494887928" + Chr(10)
  8. a = a + "scriptSessionId=82C832182E9958726D69C44E2D4128AB" + Chr(10)
  9. a = a + "page=/server/fpzwcx/index.jsp" + Chr(10)
  10. a = a + "c0-scriptName=callejb" + Chr(10)
  11. a = a + "c0-methodName=getResultsetFpzw" + Chr(10)
  12. a = a + "c0-id=7161_1297495974155" + Chr(10)
  13. a = a + "c0-param0=string:getFpzw" + Chr(10)
  14. a = a + "c0-e1=string:141001050062" + Chr(10)
  15. a = a + "c0-e2=string:29807374" + Chr(10)
  16. a = a + "c0-param1=Object:{FPDM:reference:c0-e1, FPHM:reference:c0-e2}" + Chr(10)
  17. xmlhttp.Send a
  18. Do Until xmlhttp.ReadyState = 4
  19. DoEvents
  20. Loop
  21. If xmlhttp.Status = 200 Then
  22.   getpage = xmlhttp.responseText
  23.   Debug.Print xmlhttp.responseText
  24. Else
  25.   MsgBox xmlhttp.statusText
  26. End If
  27. End Sub
复制代码
返回的东西中文字有Unicode编码,自己上网找转换代码。。。
呵呵。。。是说再见的时候了。。。大家新年快乐,后会有期。。。

[ 本帖最后由 lsftest 于 2011-2-12 19:42 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-2-12 19:52 | 显示全部楼层

回复 84楼 lsftest 的帖子

谢谢老师,祝顺利:)

TA的精华主题

TA的得分主题

发表于 2011-2-12 22:24 | 显示全部楼层
谢谢lsftest老师!
    为什么无法使用!我测试无法返回信息!请再指教!

TA的精华主题

TA的得分主题

发表于 2011-2-12 23:11 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

太棒了学习下

非常感谢,学习了新的用法。

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-2-12 23:49 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

回复 86楼 rjg 的帖子

测试的数据返回在立即窗口里面,如下:
<?xml version=\"1.0\" encoding=\"gb2312\"?>
<RECORDS><RECORD>\r\n  
<NSRDZDAH>410010002711245015</NSRDZDAH>\r\n  
<NSRSBH>41060319860905053X00</NSRSBH>\r\n     ------领购纳税人识别号
<NSRMC>\u9E64\u58C1\u5E02\u5F00\u53D1\u533A\u6797\u590F\u7EA2\u7C73\u8BBF</NSRMC>\r\n      ----领购纳税人名称
<NSRZT_DM>21</NSRZT_DM>\r\n  
<NSRZT_MC>\u5F00\u4E1A</NSRZT_MC>\r\n   --------领购纳税人状态
<FPZL_MC>\u901A\u7528\u5B9A\u989D\u53D1\u7968\uFF08\u4F0D\u62FE\u5143\uFF09</FPZL_MC>\r\n   ---------------发票名称
<BS>1</BS>\r\n  
<FP_DM>141001050062</FP_DM>\r\n  
<FPHM>29807374</FPHM>\r\n  
<FPQH>29807351</FPQH>\r\n  
<FPZH>29807400</FPZH>\r\n
</RECORD></RECORDS>

\u后面是四位Unicode编码,转成中文就能显示了  例如9E64代表:鹤  5F00代表:开

[ 本帖最后由 xmyjk 于 2011-2-12 23:56 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-2-13 14:11 | 显示全部楼层

河南的发票查询做好了

代码如下,excel见附件。
  1. Option Explicit

  2. Sub chaxun()
  3. Dim xmlhttp As Object
  4. Dim a As Variant
  5. Dim fpdm As String
  6. Dim fphm As String
  7. Dim getpage As String
  8. Dim intnum As Integer
  9. Dim i As Integer
  10. Dim j As Integer
  11. Dim k As Integer
  12. Dim l As Integer

  13. intnum = Application.WorksheetFunction.CountA([A:A])
  14. For i = 1 To intnum - 1
  15. Cells(2, 3).Value = "正在查询第" & i & "张"

  16. fpdm = Cells(i + 1, 1).Value
  17. fphm = Cells(i + 1, 2).Value

  18. Set xmlhttp = CreateObject("Microsoft.XMLHTTP")
  19. xmlhttp.Open "post", "http://www.12366.ha.cn//dwr/plaincall/callejb.getResultsetFpzw.dwr", False
  20. a = "callCount=1" & Chr(10)
  21. a = a & "httpSessionId=NWznZnhZ5GKxW62RpQhnj7hyn8VKJCGx1VmvCvyT75BQxYbG2yvD!-1138754356!1297494887928" & Chr(10)
  22. a = a & "scriptSessionId=82C832182E9958726D69C44E2D4128AB" & Chr(10)
  23. a = a & "page=/server/fpzwcx/index.jsp" & Chr(10)
  24. a = a & "c0-scriptName=callejb" & Chr(10)
  25. a = a & "c0-methodName=getResultsetFpzw" & Chr(10)
  26. a = a & "c0-id=7161_1297495974155" & Chr(10)
  27. a = a & "c0-param0=string:getFpzw" & Chr(10)
  28. a = a & "c0-e1=string:" & fpdm & Chr(10)
  29. a = a & "c0-e2=string:" & fphm & Chr(10)
  30. a = a & "c0-param1=Object:{FPDM:reference:c0-e1, FPHM:reference:c0-e2}" & Chr(10)
  31. xmlhttp.Send a

  32. Do Until xmlhttp.ReadyState = 4
  33. DoEvents
  34. Loop

  35. If xmlhttp.Status = 200 Then
  36.   getpage = xmlhttp.responseText
  37.   
  38.   Dim nsrmc As String
  39.   Dim nsrmcz As String
  40.   nsrmc = Replace(Mid(getpage, InStr(getpage, "<NSRMC>") + 7, InStr(getpage, "</NSRMC>") - InStr(getpage, "<NSRMC>") - 7), "\u", "")
  41.   For j = 1 To Len(nsrmc) Step 4
  42.     nsrmcz = nsrmcz + ChrW(CInt("&H" & Mid(nsrmc, j, 4)))
  43.     Next j
  44.   Cells(i + 1, 4).Value = nsrmcz
  45.   nsrmcz = Empty
  46.   nsrmc = Empty

  47.   Dim nsrsbh As String
  48.   nsrsbh = Mid(getpage, InStr(getpage, "<NSRSBH>") + 8, InStr(getpage, "</NSRSBH>") - InStr(getpage, "<NSRSBH>") - 8)
  49.   Cells(i + 1, 5).Value = nsrsbh
  50.   nsrsbh = Empty
  51.   
  52.   Dim fpdmc As String
  53.   fpdmc = Mid(getpage, InStr(getpage, "<FP_DM>") + 7, InStr(getpage, "</FP_DM>") - InStr(getpage, "<FP_DM>") - 7)
  54.   Cells(i + 1, 6).Value = fpdmc
  55.   fpdmc = Empty

  56.   Dim fphmc As String
  57.   fphmc = Mid(getpage, InStr(getpage, "<FPHM>") + 6, InStr(getpage, "</FPHM>") - InStr(getpage, "<FPHM>") - 6)
  58.   Cells(i + 1, 7).Value = fphmc
  59.   fphmc = Empty

  60.   Dim fpmc As String
  61.   Dim fpmcz As String
  62.   fpmc = Replace(Mid(getpage, InStr(getpage, "<FPZL_MC>") + 9, InStr(getpage, "</FPZL_MC>") - InStr(getpage, "<FPZL_MC>") - 9), "\u", "")
  63.   For k = 1 To Len(fpmc) Step 4
  64.     fpmcz = fpmcz + ChrW(CInt("&H" & Mid(fpmc, k, 4)))
  65.   Next k
  66.   Cells(i + 1, 8).Value = fpmcz
  67.   fpmcz = Empty
  68.   fpmc = Empty
  69.   
  70.   Dim nsrzt As String
  71.   Dim nsrztz As String
  72.     nsrzt = Replace(Mid(getpage, InStr(getpage, "<NSRZT_MC>") + 10, InStr(getpage, "</NSRZT_MC>") - InStr(getpage, "<NSRZT_MC>") - 10), "\u", "")
  73.   For l = 1 To Len(nsrzt) Step 4
  74.     nsrztz = nsrztz + ChrW(CInt("&H" & Mid(nsrzt, l, 4)))
  75.   Next l
  76.   Cells(i + 1, 9).Value = nsrztz
  77.   nsrztz = Empty
  78.   nsrzt = Empty
  79.    
  80. Set xmlhttp = Nothing
  81.   getpage = Empty
  82. Else
  83.   MsgBox xmlhttp.statusText
  84. End If
  85.   
  86. Next i
  87.   
  88. Cells(2, 3).Value = "查询完毕!"
  89. MsgBox "OK"
  90. Cells(2, 3).Value = "查询状态提示栏"
  91.   
  92. End Sub

  93. Sub reportErr(lStatus As Integer)
  94.         Select Case lStatus
  95.             Case 400
  96.                 MsgBox "Bad Request", vbCritical, "连接错误"
  97.             Case 401
  98.                 MsgBox "Unauthorized", vbCritical, "连接错误"
  99.             Case 402
  100.                 MsgBox "Payment Required", vbCritical, "连接错误"
  101.             Case 403
  102.                 MsgBox "Forbidden", vbCritical, "连接错误"
  103.             Case 404
  104.                 MsgBox "Not Found", vbCritical, "连接错误"
  105.             Case 407
  106.               MsgBox "Proxy Authentication Required", vbCritical, "连接错误"
  107.             Case 408
  108.                 MsgBox "Request Timeout", vbCritical, "连接错误"
  109.             Case 503
  110.                 MsgBox "Service Unavailable", vbCritical, "连接错误"
  111.             Case Else
  112.               MsgBox "Can not reach by other reason", vbCritical, "连接错误"
  113.         End Select
  114. End Sub
复制代码

河南发票查询.rar

13.9 KB, 下载次数: 459

河南发票查询

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-2-13 14:17 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

回复 81楼 rjg 的帖子

rjg
我用我的样式做了
原理都在里面,你看看自己需要如何的,再改吧。

TA的精华主题

TA的得分主题

发表于 2011-2-13 20:51 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-17 16:19 , Processed in 0.041720 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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