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-11 20:23 | 显示全部楼层

回复 39楼 lsftest 的帖子

本帖已被收录到知识树中,索引项:网页交互
明白,好的,受教了,谢谢了

TA的精华主题

TA的得分主题

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

我的意思是取数,不弹出网页。就是这样。哈哈。

我的意思只是取数,不弹出网页。就是这样。哈哈。

TA的精华主题

TA的得分主题

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

TA的精华主题

TA的得分主题

发表于 2011-1-11 20:59 | 显示全部楼层
原帖由 120HYH 于 2011-1-11 20:26 发表
我的意思只是取数,不弹出网页。就是这样。哈哈。

呵呵,走运,那网站服务器没有再校验验证码,省了很多事。。。按上面连接里说的在excel里用webquery应该很轻松就搞好了吧。。
既然可以绕过验证码,如果想提高速度,也是和给楼主的建议一样,使用xmlhttp去搞,速度会快很多。。。具体方法上网找找,我就不说了。。
最后还是那句,那是政府网站,不要干坏事,否则我也成帮凶了。。。批量查询也最好选在网络非繁忙时间去做。。。

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-1-11 21:06 | 显示全部楼层

回复 44楼 lsftest 的帖子

呵呵,明白了
放心,我们也是按政府的要求,去查验客户的发票的真实性,才不得不去查询的
只是一次要查好几百张,那个工作量实在恐怖,而且查完了还要打印存档
现在有了工具,后勤人员只要存电子档或仅仅打印EXcel文档,又环保
谢谢了。

TA的精华主题

TA的得分主题

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

XMYJK兄帮我搞出来。省事啊。我不会弄这玩艺

XMYJK兄帮我搞出来。省事啊。我不会弄这玩艺

TA的精华主题

TA的得分主题

发表于 2011-1-13 20:07 | 显示全部楼层

有会弄的朋友不?

有会弄的朋友不?

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-1-27 14:20 | 显示全部楼层

研究了下XMLHTTP的做法

抽空研究了下XMLHTTP的做法,成功做出来了,如附件
也感谢lsftest的指点。

[ 本帖最后由 xmyjk 于 2011-1-27 14:37 编辑 ]

厦门增值税票查询工具.rar

16.09 KB, 下载次数: 1838

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-1-27 14:40 | 显示全部楼层

代码如下

  1. Option Explicit
  2. Sub chaxun()
  3. Dim xmlhttp As Object
  4. Dim intnum As Integer
  5. Dim i As Integer
  6. Dim strdaima As String
  7. Dim strhaoma As String
  8. Dim getpage As String
  9. Dim stra As String
  10. Dim strb(4) As String

  11. intnum = Application.WorksheetFunction.CountA([A:A])
  12. For i = 1 To intnum - 1
  13. Cells(2, 3).Value = "正在查询第" & i & "张"
  14. Set xmlhttp = CreateObject("Microsoft.XMLHTTP")
  15. strdaima = Cells(i + 1, 1).Value
  16. strhaoma = Cells(i + 1, 2).Value
  17. xmlhttp.Open "get", "http://www.xm-n-tax.gov.cn/BrowseServlet?szsat.trancode=101007&szsat.errpage=%2Fjsp%2Finternet%2Findex%2FerrPage.jsp&szsat.normalpage=%2Fjsp%2Finternet%2Finforservice%2Fidentifyout.jsp&szsat.fpzw.fplx=&szsat.fpzw.fpdm=" & strdaima & "&szsat.fpzw.fphm=" & strhaoma, False
  18. xmlhttp.setRequestHeader "Content-Type", "text/html"
  19. xmlhttp.Send ""
  20. Do Until xmlhttp.ReadyState = 4
  21. DoEvents
  22. Loop
  23. If xmlhttp.Status = 200 Then
  24. getpage = xmlhttp.responseText
  25. stra = Replace(Mid(getpage, InStr(getpage, "纳税人识别号:"), InStr(getpage, "</font></td>") - InStr(getpage, "纳税人识别号:")), "src=" & Chr(34) & "/jsp/internet/images/main_reddian.gif" & Chr(34) & " width=" & Chr(34) & "6" & Chr(34) & " height=" & Chr(34) & "10" & Chr(34) & ">", "[")
  26. strb(0) = Replace(Split(stra, "[")(0), "</td>", "]")
  27. strb(1) = Replace(Split(stra, "[")(1), "</td>", "]")
  28. strb(2) = Replace(Split(stra, "[")(2), "</td>", "]")
  29. strb(3) = Replace(Split(stra, "[")(3), "</td>", "]")
  30. strb(4) = Replace(Split(stra, "[")(4), "</td>", "]")
  31. Cells(i + 1, 4).Value = Trim(Mid(Split(strb(0), "]")(1), InStr(Split(strb(0), "]")(1), ">") + 1, Len(Split(strb(0), "]")(1))))
  32. Cells(i + 1, 5).Value = Trim(Mid(Split(strb(1), "]")(1), InStr(Split(strb(1), "]")(1), ">") + 1, Len(Split(strb(1), "]")(1))))
  33. Cells(i + 1, 6).Value = Trim(Mid(Split(strb(2), "]")(1), InStr(Split(strb(2), "]")(1), ">") + 1, Len(Split(strb(2), "]")(1))))
  34. Cells(i + 1, 7).Value = Trim(Mid(Split(strb(3), "]")(1), InStr(Split(strb(3), "]")(1), ">") + 1, Len(Split(strb(3), "]")(1))))
  35. Cells(i + 1, 8).Value = Trim(Mid(Split(strb(4), "]")(1), InStr(Split(strb(4), "]")(1), ">") + 1, Len(Split(strb(4), "]")(1))))
  36. Cells(i + 1, 9).Value = Trim(Mid(Split(strb(4), "]")(3), InStr(Split(strb(4), "]")(3), "0000") + 7, InStr(Split(strb(4), "]")(3), "!") - InStr(Split(strb(4), "]")(3), "0000") - 6))

  37. Set xmlhttp = Nothing
  38. getpage = Empty
  39. Else
  40.   reportErr (xmlhttp.Status)
  41. End If
  42. Next i

  43. Cells(2, 3).Value = "查询完毕!"
  44. MsgBox "OK"
  45. Cells(2, 3).Value = "查询状态提示栏"

  46. End Sub

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

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

TA的精华主题

TA的得分主题

发表于 2011-1-27 17:35 | 显示全部楼层
原帖由 xmyjk 于 2011-1-27 14:40 发表
Sub chaxun()
Dim xmlhttp As Object, objstream As Object
Dim intnum As Integer
Dim i As Integer
Dim strdaima As String
Dim strhaoma As String
Dim getpage As String
Dim stra As String
Dim strb() ...

呵呵,恭喜恭喜。。。
如果有时间想进一步优化,就看看正则表达式的东西吧,对数据提取有很大帮助,语句会简洁很多。。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

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

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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