Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 3198|回复: 2

[已解决]请高手帮忙!

[复制链接]
发表于 2016-10-16 20:18 | 显示全部楼层 |阅读模式
本帖最后由 fggf 于 2017-4-25 12:41 编辑


格式较固定,如何用vba提取所要到工作表中。请高手帮忙,万分感谢!
最佳答案
2016-10-21 11:45
  1. Sub test_XWZ()
  2.     Dim strText As String, data As Object, bId, bList
  3.     Dim brr(1 To 1000, 1 To 9), ar(2)
  4.     ar(0) = Array("交标序号", "投标单位", "报价(万元)", "工期", "质量", "差值(万元)", "评标序号", "项目经理", "审查结果")
  5.     ar(1) = Array("projname", "openDate", "bidPriceNotes")
  6.     ar(2) = Array("comNum", "deptName", "bidDataQuote", "bidDataDays", "bidDataQa", "diffValue", "evaOrder", "mgrName", "checkResult")
  7.     With CreateObject("MSXML2.XMLHTTP")
  8.         .Open "POST", "http://www.qzzb.gov.cn/liveBroadcast/getLiveBidderNotList.do", False
  9.         .setRequestHeader "Content-Type", "application/json;charset=UTF-8"
  10.         .Send "{bidProjId:21257}"
  11.         strText = .responsetext
  12.     End With
  13.     With CreateObject("msscriptcontrol.scriptcontrol")
  14.         .Language = "JavaScript"
  15.         .AddCode "var mydata=" & strText
  16.         Set objJSON = .CodeObject
  17.     End With
  18.     For i = 0 To 2
  19.         brr(i + 1, 1) = CallByName(objJSON.mydata.data, ar(1)(i), VbGet)
  20.     Next
  21.     i = i + 1
  22.     For j = 0 To 8
  23.         brr(i, j + 1) = ar(0)(j)
  24.     Next
  25.     For Each bList In objJSON.mydata.data.bidderList
  26.         i = i + 1
  27.         For j = 0 To 8
  28.             brr(i, j + 1) = CallByName(bList, ar(2)(j), VbGet)
  29.         Next
  30.     Next
  31.     [a2:i1000] = ""
  32.     [a2].Resize(i, 9) = brr
  33. End Sub
复制代码


kb.jpg

如何用vba提取网页数据.rar (57.58 KB, 下载次数: 7)
发表于 2016-10-21 11:45 | 显示全部楼层    本楼为最佳答案   
  1. Sub test_XWZ()
  2.     Dim strText As String, data As Object, bId, bList
  3.     Dim brr(1 To 1000, 1 To 9), ar(2)
  4.     ar(0) = Array("交标序号", "投标单位", "报价(万元)", "工期", "质量", "差值(万元)", "评标序号", "项目经理", "审查结果")
  5.     ar(1) = Array("projname", "openDate", "bidPriceNotes")
  6.     ar(2) = Array("comNum", "deptName", "bidDataQuote", "bidDataDays", "bidDataQa", "diffValue", "evaOrder", "mgrName", "checkResult")
  7.     With CreateObject("MSXML2.XMLHTTP")
  8.         .Open "POST", "http://www.qzzb.gov.cn/liveBroadcast/getLiveBidderNotList.do", False
  9.         .setRequestHeader "Content-Type", "application/json;charset=UTF-8"
  10.         .Send "{bidProjId:21257}"
  11.         strText = .responsetext
  12.     End With
  13.     With CreateObject("msscriptcontrol.scriptcontrol")
  14.         .Language = "JavaScript"
  15.         .AddCode "var mydata=" & strText
  16.         Set objJSON = .CodeObject
  17.     End With
  18.     For i = 0 To 2
  19.         brr(i + 1, 1) = CallByName(objJSON.mydata.data, ar(1)(i), VbGet)
  20.     Next
  21.     i = i + 1
  22.     For j = 0 To 8
  23.         brr(i, j + 1) = ar(0)(j)
  24.     Next
  25.     For Each bList In objJSON.mydata.data.bidderList
  26.         i = i + 1
  27.         For j = 0 To 8
  28.             brr(i, j + 1) = CallByName(bList, ar(2)(j), VbGet)
  29.         Next
  30.     Next
  31.     [a2:i1000] = ""
  32.     [a2].Resize(i, 9) = brr
  33. End Sub
复制代码


kb.jpg

如何用vba提取网页数据.rar (57.58 KB, 下载次数: 7)
回复

使用道具 举报

 楼主| 发表于 2017-2-6 11:16 | 显示全部楼层
本帖最后由 fggf 于 2018-5-3 14:24 编辑

您好,可以麻烦您再帮我看下吗,现在网址有稍微改动(多加 了几个字母),造成提取数据失败了,不知要怎么改动呢?
这是之前的网址:
现在的网址是:
(说明:isHistory的等号后面只有0和1两种数字,0表示当天日期开标的,1表示今天之前已开过标的。要让这个isHistory的数字自动采用L1单元格上的数字,而bidProjId等号后面的数字则自动采用M1单元格上的数字)

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-6 00:34 , Processed in 0.392145 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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