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-1-27 22:41 | 显示全部楼层

回复 50楼 lsftest 的帖子

本帖已被收录到知识树中,索引项:网页交互
谢谢,我也觉得我那个取字符串的过程太过冗长了
学习ING
自己找了贴
也发出来大家一起学习
http://www.officefans.net/cdb/vi ... &extra=page%3D1

TA的精华主题

TA的得分主题

发表于 2011-1-27 23:32 | 显示全部楼层
留下脚印,进一步学习!

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-1-28 10:39 | 显示全部楼层

回复 44楼 lsftest 的帖子

请教下ISFTEST
今天在帮东莞的朋友看看能不能用XMLHTTP的方式做发票查询
http://app.gd-n-tax.gov.cn/wssw/ ... _checking_input.jsp
想请教下,在XMLHTTP方式下,这个网站,我应该往哪里发送查询的数据呢?
试了好几个位置,好像都不行。
XMLHTTP的数据方式我要用POST还是用GET的呢?

TA的精华主题

TA的得分主题

发表于 2011-1-28 11:54 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
原帖由 xmyjk 于 2011-1-28 10:39 发表
请教下ISFTEST
今天在帮东莞的朋友看看能不能用XMLHTTP的方式做发票查询
http://app.gd-n-tax.gov.cn/wssw/ ... _checking_input.jsp
想请教下,在XMLHTTP方式下,这个网站, ...

看了一下,这个页面跟你那个不一样,如果非得用xmlhttp,一定得post,post到http://app.gd-n-tax.gov.cn/wssw/servlet/invoice_checking去,而且不能象你那样直接在连接里带上发票号发票码之类的参数,而是要在随后的send方法中作为参数发送出去。。。
没有测试过,只是随便说说。。。

TA的精华主题

TA的得分主题

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

回复 54楼 lsftest 的帖子

试了一下,好像不行耶,麻烦看下。
  1. Option Explicit
  2. Sub chaxun()
  3. Dim xmlhttp As Object

  4. Set xmlhttp = CreateObject("Microsoft.XMLHTTP")
  5. xmlhttp.Open "post", "http://app.gd-n-tax.gov.cn/wssw/servlet/invoice_checking", False
  6. xmlhttp.setRequestHeader "pragma", "no-cache"
  7. xmlhttp.Send "fpdm=144001021134&fphm=07691076&xhfswdjh=441900L28192078&xhfmc=东莞市塘厦运凯五金电器商店&kpje=9002.0&kprq=2010-08-04&INVOICE_CHECKING_CHECKCODE=2829&check_code=2829"
  8. Do Until xmlhttp.ReadyState = 4
  9. DoEvents
  10. Loop

  11. If xmlhttp.Status = 200 Then
  12.   Debug.Print xmlhttp.responseText
  13. Else
  14.   reportErr (xmlhttp.Status)
  15. End If

  16. End Sub

  17. Sub reportErr(lStatus As Integer)
  18.         Select Case lStatus
  19.             Case 400
  20.                 MsgBox "Bad Request", vbCritical, "连接错误"
  21.             Case 401
  22.                 MsgBox "Unauthorized", vbCritical, "连接错误"
  23.             Case 402
  24.                 MsgBox "Payment Required", vbCritical, "连接错误"
  25.             Case 403
  26.                 MsgBox "Forbidden", vbCritical, "连接错误"
  27.             Case 404
  28.                 MsgBox "Not Found", vbCritical, "连接错误"
  29.             Case 407
  30.               MsgBox "Proxy Authentication Required", vbCritical, "连接错误"
  31.             Case 408
  32.                 MsgBox "Request Timeout", vbCritical, "连接错误"
  33.             Case 503
  34.                 MsgBox "Service Unavailable", vbCritical, "连接错误"
  35.             Case Else
  36.               MsgBox "Can not reach by other reason", vbCritical, "连接错误"
  37.         End Select
  38. End Sub
复制代码

[ 本帖最后由 xmyjk 于 2011-1-28 13:54 编辑 ]

TA的精华主题

TA的得分主题

发表于 2011-1-28 14:12 | 显示全部楼层
原帖由 xmyjk 于 2011-1-28 13:31 发表
试了一下,好像不行耶,麻烦看下。Option Explicit
Sub chaxun()
Dim xmlhttp As Object

Set xmlhttp = CreateObject("Microsoft.XMLHTTP")
xmlhttp.Open "post", "http://app.gd-n-tax.gov.cn/wssw/servlet/i ...

send这个看看:fpdm=00000000000&fphm=1111111&xhfswdjh=2222222222&xhfmc一堆莫名其妙的东西&kpje=285.0&kprq=2010-12-06&INVOICE_CHECKING_CHECKCODE=7690&check_code=7690
验证码自己改一下

[ 本帖最后由 lsftest 于 2011-1-28 14:40 编辑 ]

TA的精华主题

TA的得分主题

发表于 2011-1-28 14:39 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
xmlhttp.Open "post", "http://app.gd-n-tax.gov.cn/wssw/servlet/invoice_checking", False
xmlhttp.setRequestHeader "CONTENT-TYPE", "application/x-www-form-urlencoded"
xmlhttp.Send "fpdm=1111111111111111&fphm=222222222&xhfswdjh=333333333333&xhfmc一堆莫名其妙的东西&kpje=285.0&kprq=2010-12-06&INVOICE_CHECKING_CHECKCODE=0401&check_code=0401"


这样就行了(验证码自己搞)。。。
不过。。上面那堆“莫名其妙的东西”,由于是中文。查询里带中文字就是麻烦,你得先进行处理,上网找找好象有个什么escpe什么之类的编码子程式,搬进来用就是了。。。。

[ 本帖最后由 lsftest 于 2011-1-28 14:44 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-1-28 16:02 | 显示全部楼层

回复 57楼 lsftest 的帖子

哇!厉害!谢谢了!
原来HTTP的头部信息设置有问题。
高手阿!

TA的精华主题

TA的得分主题

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

回复 57楼 lsftest 的帖子

东莞的税票查询XMLHTTP方式也做好了
再次谢谢ISFTEST的帮助,真是网页高手啊,学习

[ 本帖最后由 xmyjk 于 2011-1-28 20:47 编辑 ]

东莞税票查询.rar

15.87 KB, 下载次数: 802

TA的精华主题

TA的得分主题

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

东莞的查询代码如下

  1. Option Explicit
  2. Sub chaxun()
  3. Dim xmlhttp As Object
  4. Dim intnum As Integer
  5. Dim i As Integer
  6. Dim strdm As String
  7. Dim strhm As String
  8. Dim strdjh As String
  9. Dim strmc As String
  10. Dim strje As String
  11. Dim strrq As String
  12. Dim stra As String
  13. Dim getpage As String
  14. Dim strjg As String

  15. intnum = Application.WorksheetFunction.CountA([A:A])
  16. For i = 1 To intnum - 1
  17. Cells(2, 7).Value = "正在查询第" & i & "张"
  18. strdm = Cells(i + 1, 1).Value
  19. strhm = Cells(i + 1, 2).Value
  20. strdjh = Cells(i + 1, 3).Value
  21. strmc = Cells(i + 1, 4).Value
  22. strje = Cells(i + 1, 5).Value
  23. strrq = Format(Cells(i + 1, 6).Value, "yyyy-mm-dd")

  24. Set xmlhttp = CreateObject("Microsoft.XMLHTTP")
  25. xmlhttp.Open "post", "http://app.gd-n-tax.gov.cn/wssw/servlet/invoice_checking", False
  26. xmlhttp.setRequestHeader "CONTENT-TYPE", "application/x-www-form-urlencoded"
  27. stra = URLEncode(strmc)
  28. xmlhttp.Send "fpdm=" & strdm & "&fphm=" & strhm & "&xhfswdjh=" & strdjh & "&xhfmc=" & stra & "&kpje=" & strje & "&kprq=" & strrq & "&INVOICE_CHECKING_CHECKCODE=2829&check_code=2829"

  29. Do Until xmlhttp.ReadyState = 4
  30. DoEvents
  31. Loop

  32. If xmlhttp.Status = 200 Then
  33.   getpage = xmlhttp.responseText
  34.   strjg = Mid(getpage, InStr(getpage, "查询结果") + 177, InStr(getpage, "如需进一步查验发票真伪") - InStr(getpage, "查询结果") - 266)
  35.   Cells(i + 1, 8).Value = strjg
  36. Else
  37.   reportErr (xmlhttp.Status)
  38. End If

  39. Next i

  40. Cells(2, 7).Value = "查询完毕!"
  41. MsgBox "OK"
  42. Cells(2, 7).Value = "查询状态提示栏"

  43. End Sub

  44. Sub reportErr(lStatus As Integer)
  45.         Select Case lStatus
  46.             Case 400
  47.                 MsgBox "Bad Request", vbCritical, "连接错误"
  48.             Case 401
  49.                 MsgBox "Unauthorized", vbCritical, "连接错误"
  50.             Case 402
  51.                 MsgBox "Payment Required", vbCritical, "连接错误"
  52.             Case 403
  53.                 MsgBox "Forbidden", vbCritical, "连接错误"
  54.             Case 404
  55.                 MsgBox "Not Found", vbCritical, "连接错误"
  56.             Case 407
  57.               MsgBox "Proxy Authentication Required", vbCritical, "连接错误"
  58.             Case 408
  59.                 MsgBox "Request Timeout", vbCritical, "连接错误"
  60.             Case 503
  61.                 MsgBox "Service Unavailable", vbCritical, "连接错误"
  62.             Case Else
  63.               MsgBox "Can not reach by other reason", vbCritical, "连接错误"
  64.         End Select
  65. End Sub

  66. Public Function URLEncode(strInput As String) As String
  67. '-------------------------------------------------------
  68. '示例: Debug.Print URLEncode("PowerBASIC中国")
  69. '-------------------------------------------------------
  70. Dim strOutput As String
  71. Dim intAscii As Integer
  72. Dim i As Integer
  73. Dim strTemp As String

  74. For i = 1 To Len(strInput)
  75. intAscii = Asc(Mid(strInput, i, 1))
  76. If ((intAscii < 58) And (intAscii > 47)) Or _
  77. ((intAscii < 91) And (intAscii > 64)) Or _
  78. ((intAscii < 123) And (intAscii > 96)) _
  79. Then
  80. strOutput = strOutput & Chr$(intAscii)
  81. Else
  82. strTemp = Trim$(Hex$(intAscii))
  83. strOutput = strOutput & "%" & Left(strTemp, 2) & "%" & Right(strTemp, 2)
  84. End If
  85. Next
  86. URLEncode = strOutput
  87. End Function
复制代码
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-17 16:41 , Processed in 0.032987 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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