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-28 21:14 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖已被收录到知识树中,索引项:网页交互
原帖由 xmyjk 于 2011-1-28 20:43 发表
东莞的税票查询XMLHTTP方式也做好了
再次谢谢ISFTEST的帮助,真是网页高手啊,学习

哈哈。。。。惭愧。。。其实我对网页基本可说一窍不通的。。。
倒是想问问,有没有实际测试过,批量查询时,xmlhttp是否真比webbrowser或webquery快?如果快,大概快多少?

TA的精华主题

TA的得分主题

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

回复 61楼 lsftest 的帖子

我有试过就是
如果是厦门国税的那个,不需要转码的,XMLHTTP确实比WEBBROWSER和WEBQUERY快得多
其他的,XMLHTTP比WEBBROWSER快,但是速度没有WEBQUERY稳定,WEBQUERY第一次慢后面非常快。

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

TA的精华主题

TA的得分主题

发表于 2011-1-28 21:35 | 显示全部楼层
原帖由 xmyjk 于 2011-1-28 21:23 发表
我有试过就是
如果是厦门国税的那个,不需要转码的,XMLHTTP确实比WEBBROWSER和WEBQUERY快得多

东莞国税的那个,XMLHTTP比WEBBROWSER快,但是速度没有WEBQUERY稳定,WEBQUERY第一次慢后面非常快。

哦。。。谢谢。。。
webbrowser要顾及图片之类的什么杂7杂8的东西,最慢是意料之中。。。
WEBQUERY也许是excel有自己的转码子程式,那么比我们用的效率高那也说得过去。。。。
不管怎样。。。问题解决了就好。。。。

TA的精华主题

TA的得分主题

发表于 2011-1-28 22:06 | 显示全部楼层
谢谢大侠们分享,收藏学习一下!

TA的精华主题

TA的得分主题

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

回复 63楼 lsftest 的帖子

是啊,解决了,结贴了,谢谢各位咯:)

TA的精华主题

TA的得分主题

发表于 2011-1-28 23:25 | 显示全部楼层

TA的精华主题

TA的得分主题

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

把webquery方式做的也传上来

响应部分网友要求,吧webquery方式的也传上来。
厦门和东莞的都做了。

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

16.21 KB, 下载次数: 973

东莞增值税票查询webquery.rar

16.58 KB, 下载次数: 701

TA的精华主题

TA的得分主题

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

webquery方式代码如下

没想到做着做着,网页查询的4种方式都做出来了
感叹个

厦门的,不需要POST数据的
  1. Option Explicit
  2. Sub chaxun()
  3. Dim intnum As Integer
  4. Dim i As Integer
  5. Dim strdaima As String
  6. Dim strhaoma As String

  7. intnum = Application.WorksheetFunction.CountA([A:A])
  8. For i = 1 To intnum - 1
  9. Cells(2, 3).Value = "正在查询第" & i & "张"
  10. Application.ScreenUpdating = False
  11. strdaima = Cells(i + 1, 1).Value
  12. strhaoma = Cells(i + 1, 2).Value

  13. With ActiveSheet.QueryTables.Add(Connection:="URL;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, Destination:=Cells(1, 10))
  14.      .Name = "第" & i & "张"
  15.      .BackgroundQuery = False
  16.      .AdjustColumnWidth = True
  17.      .RefreshPeriod = 0
  18.      .WebSelectionType = xlSpecifiedTables
  19.      .WebFormatting = xlWebFormattingNone
  20.      .WebTables = "13"
  21.      .Refresh BackgroundQuery:=False
  22. End With

  23. Cells(i + 1, 4).Value = Cells(5, 12).Value
  24. Cells(i + 1, 5).Value = Cells(6, 12).Value
  25. Cells(i + 1, 6).Value = Cells(7, 12).Value
  26. Cells(i + 1, 7).Value = Cells(8, 12).Value
  27. Cells(i + 1, 8).Value = Cells(9, 12).Value
  28. Cells(i + 1, 9).Value = Cells(11, 11).Value
  29. Range("j1:o20").Clear

  30. Application.ScreenUpdating = True
  31. Next i

  32. Cells(2, 3).Value = "查询完毕!"
  33. MsgBox "OK"
  34. Cells(2, 3).Value = "查询状态提示栏"

  35. End Sub
复制代码
东莞的,需要POST数据的
  1. Option Explicit
  2. Sub chaxun()
  3. Dim intnum As Integer
  4. Dim i As Integer
  5. Dim strdm As String
  6. Dim strhm As String
  7. Dim strdjh As String
  8. Dim strmc As String
  9. Dim strje As String
  10. Dim strrq As String
  11. Dim stra As String

  12. intnum = Application.WorksheetFunction.CountA([A:A])
  13. For i = 1 To intnum - 1
  14. Application.ScreenUpdating = False
  15. Cells(2, 7).Value = "正在查询第" & i & "张"
  16. strdm = Cells(i + 1, 1).Value
  17. strhm = Cells(i + 1, 2).Value
  18. strdjh = Cells(i + 1, 3).Value
  19. strmc = Cells(i + 1, 4).Value
  20. strje = Cells(i + 1, 5).Value
  21. strrq = Format(Cells(i + 1, 6).Value, "yyyy-mm-dd")
  22. stra = URLEncode(strmc)
  23. With ActiveSheet.QueryTables.Add(Connection:="URL;http://app.gd-n-tax.gov.cn/wssw/servlet/invoice_checking", Destination:=Range("J1"))
  24.      .PostText = "fpdm=" & strdm & "&fphm=" & strhm & "&xhfswdjh=" & strdjh & "&xhfmc=" & stra & "&kpje=" & strje & "&kprq=" & strrq & "&INVOICE_CHECKING_CHECKCODE=2829&check_code=2829"
  25.      .Name = "第" & i & "张"
  26.      .BackgroundQuery = False
  27.      .AdjustColumnWidth = True
  28.      .RefreshPeriod = 0
  29.      .WebSelectionType = xlSpecifiedTables
  30.      .WebFormatting = xlWebFormattingNone
  31.      .WebTables = "5"
  32.      .Refresh BackgroundQuery:=False
  33. End With

  34. Cells(i + 1, 8).Value = Cells(3, 10).Value
  35. Range("j1:j10").Clear
  36. Application.ScreenUpdating = True
  37. Next i

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

  41. End Sub


  42. Public Function URLEncode(strInput As String) As String
  43. '-------------------------------------------------------
  44. '示例: Debug.Print URLEncode("PowerBASIC中国")
  45. '-------------------------------------------------------
  46. Dim strOutput As String
  47. Dim intAscii As Integer
  48. Dim i As Integer
  49. Dim strTemp As String

  50. For i = 1 To Len(strInput)
  51. intAscii = Asc(Mid(strInput, i, 1))
  52. If ((intAscii < 58) And (intAscii > 47)) Or _
  53. ((intAscii < 91) And (intAscii > 64)) Or _
  54. ((intAscii < 123) And (intAscii > 96)) _
  55. Then
  56. strOutput = strOutput & Chr$(intAscii)
  57. Else
  58. strTemp = Trim$(Hex$(intAscii))
  59. strOutput = strOutput & "%" & Left(strTemp, 2) & "%" & Right(strTemp, 2)
  60. End If
  61. Next
  62. URLEncode = strOutput
  63. End Function
复制代码

TA的精华主题

TA的得分主题

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

TA的精华主题

TA的得分主题

发表于 2011-1-29 23:30 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

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

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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