作者:绿色风
分类:
时间:2022-08-17
浏览:113
楼主 xmyjk |
Q:如何用VBA下载湖北省基本药物集中采购平台的药品信息?网址:http://www.hbjbywzb.cn/ZBweb/HomePage/ShowGoodsList.aspx 且要把其多页数据下全。
A:思路,用IE对象打开网页,获取其表单数据,然后执行期翻页的脚本,通过源代码分析,我们可以得知,执行javascript:__doPostBack('HzPager1','2')这样的脚本可以翻页。我们只需替换红色部分为变量,即可实现翻页。- Option Explicit
- Sub a()
- Dim ie1 As Object, dmt As Object, r As Object, i As Long, p As Long, j As Long, t As Single, x As Long
- Load UserForm1
- UserForm1.Show 0
- [a1].CurrentRegion.Offset(1).Clear
- Cells.NumberFormat = "@"
- Set ie1 = UserForm1.WebBrowser1
- With ie1
- .Navigate "http://www.hbjbywzb.cn/ZBweb/HomePage/ShowGoodsList.aspx" '加载网页
- Do Until .ReadyState = 4 '等待加载完毕
- DoEvents
- Loop
- Set dmt = .Document '获取文档体
- Set r = dmt.All("gridview").Rows '获取表格所在的行
- For i = 1 To r.Length - 1 '历遍每行每列取数
- For j = 0 To r(i).Cells.Length - 1
- Cells(i + 1, j + 1) = r(i).Cells(j).innerText
- Next
- Next
- For p = 2 To 4454
- .Navigate "javascript:__doPostBack('HzPager1','" & p & "')" '执行翻页的脚本
- t = Timer
- Do Until .ReadyState = 4 And .Busy = False And Timer > t + 1 '待脚本触发,等待数据再次加载完毕
- DoEvents
- Loop
- Set dmt = .Document '同上面的取数过程。
- Set r = dmt.All("gridview").Rows
- x = [a65536].End(3).Row
- For i = 1 To r.Length - 1
- For j = 0 To r(i).Cells.Length - 1
- Cells(i + x, j + 1) = r(i).Cells(j).innerText
- Next
- Next
- Next
- End With
- Set ie1 = Nothing
- Set dmt = Nothing
- Set r = Nothing
- [a1].CurrentRegion.Columns.AutoFit
- End Sub
hn.zip |
2楼 亡者天下 |
过来学习一下! |
3楼 yjwdjfqb |
版主这个非常的好,当关闭窗体时,就会报错,改下吗 |
4楼 无忧招标信息网 |
谢谢楼主!~ |
5楼 水星钓鱼 |
强大,学习 |
6楼 老糊涂 |
过来学习一下 |
免责声明
有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素,
经与ExcelTip.Net站长Apolloh商议并征得其同意,
现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示,
供有需要的人士查询使用,也慰缅曾经的论坛时代。
所示各个帖子的原作者如对版权有异议,
可与本人沟通提出,或于本站点留言,我们会尽快处理。
在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一