ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 11481|回复: 19

[求助] 需要翻页提取多页网页数据问题,谢谢浪板!

[复制链接]

TA的精华主题

TA的得分主题

发表于 2011-3-30 23:56 | 显示全部楼层 |阅读模式
                     看了不少以前的帖子,也尝试了很多次都不成功。
            http://quote.cfi.cn/quotelist.as ... page=1&mystock=
                     我想把以上网址全部页面(现在是22页)的数据资料一次全部导入EXCEL2007表格,用VBA程序。一页一页复制确实太慢了。
            谢谢各位前辈指导,看了以前浪板不少帖子,还是没能在这个网页实现导入。

TA的精华主题

TA的得分主题

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

  1. Sub Macro1()
  2. Dim p&
  3. For p = 1 To 5
  4. With ActiveSheet.QueryTables.Add("URL;http://quote.cfi.cn/quotelist.aspx?sortfd=%e4%bb%a3%e7%a0%81&sectypeid=1&sortway=asc&page=" & p, [a65536].End(3).Offset(1, 0))
  5.         .WebTables = "2"
  6.         .Refresh BackgroundQuery:=False
  7.     End With
  8.     Next
  9. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2011-3-31 00:54 | 显示全部楼层

狼版真快,我是用XMLHTTP做的,代码如下,excel如附件。

  1. Sub Test()
  2.     Dim i As Integer, p As Integer, rows As Long
  3.     Dim arr() As String, tmp() As String
  4.         
  5.     On Error Resume Next
  6.     [a1:p1] = Split("代码,名称,最新,涨跌,涨跌幅,前收,开盘,最高,最低,成交量,成交额,换手率,前一周涨跌,前一月涨跌,总股本,流通股本", ",")
  7.     For p = 1 To 22
  8.     With CreateObject("Msxml2.XMLHTTP")
  9.         .Open "get", "http://quote.cfi.cn/quotelist.aspx?sortfd=%E4%BB%A3%E7%A0%81&marketid=&hy=&sectypeid=1&sortway=asc&stockcode=&page=" & p & "&mystock=", False
  10.         .send
  11.         tmp() = Split(Split(Split(Replace(.responsetext, "<nobr>", ""), "流通股本</a></td></tr>")(1), "</tr></table>1")(0), "<td>")
  12.     End With
  13.     ReDim arr(UBound(tmp) \ 16, 15)
  14.     For i = 1 To UBound(tmp)
  15.        arr((i - 1) \ 16, (i - 1) Mod 16) = Split(Filter(Split(tmp(i), ">"), "</")(0), "</")(0)
  16.     Next
  17.     rows = [a65536].End(xlUp).Offset(1, 0).Row
  18.     Application.Goto "R" & rows & "c1"
  19.     Cells(rows, 1).Resize(UBound(arr) + 1, 16) = arr
  20.     Next
  21.         
  22.     [a:p].Columns.AutoFit
  23.     MsgBox "Ok"
  24. End Sub
复制代码

中财网.rar

15.16 KB, 下载次数: 1585

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-4-1 00:24 | 显示全部楼层
非常感谢两位老师指导,大概看懂了两位老师采用的方法,由于VBA基础不扎实,里面的代码很多没理解,以后加强学习。狼版的代码里面的 1 TO 5,表示导入1-5页数据,我要导入22页数据,就改为1 TO 22 了,但是以后股票数量会增加,页数也会增加,我把22改大很多,如改为100,是否能导入1-100页(数据不到100页就导入现有的全部页数的数据)。或者有更好的方法可以扫描或确认现在一共有多少页,不管页数增加多少,然后把全部页数的数据都导入。
       上旋下弦月老师的方法不知道能实现这个功能不,现在还测试不了,以后股票数量增多,页数增加了就能知道了。
       还想请教一个问题,如果我想提高数据导入速度,不需要导入全部数据,只导入代码,名称,最新,总股本,流通股本几个项目的数据,能否实现,速度应该会有所增加,用时也会减少,再次感谢各位老师的指导!

TA的精华主题

TA的得分主题

发表于 2011-4-1 00:53 | 显示全部楼层
原帖由 wushuangqi 于 2011-4-1 00:24 发表
非常感谢两位老师指导,大概看懂了两位老师采用的方法,由于VBA基础不扎实,里面的代码很多没理解,以后加强学习。狼版的代码里面的 1 TO 5,表示导入1-5页数据,我要导入22页数据,就改为1 TO 22 了,但是以后股票数 ...


我的原理一样的,只要你页面源代码格式不变,你把22继续往后该一样的。

没办法加快速度,一样都是要取得每个页面的源代码(XMLHTTP)或者查询了某个页面(QUERYTABLE)后取得数据,所以即使你减少数据需求的列数,依然还是要访问页面。
取决你的网络环境。

TA的精华主题

TA的得分主题

发表于 2011-4-17 16:27 | 显示全部楼层
这句话是什么意思?

tmp() = Split(Split(Split(Replace(.responsetext, "<nobr>", ""), "流通股本</a></td></tr>")(1), "</tr></table>1")(0), "<td>")

TA的精华主题

TA的得分主题

发表于 2011-4-17 18:07 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
可以使用正则表达式从网页源码中知道究竟有多少页。

TA的精华主题

TA的得分主题

发表于 2011-4-17 18:50 | 显示全部楼层
原帖由 lsftest 于 2011-4-17 18:07 发表
可以使用正则表达式从网页源码中知道究竟有多少页。


lsftest老师回来啦,好久不见啊。谢谢指教。

[ 本帖最后由 xmyjk 于 2011-4-17 18:52 编辑 ]

TA的精华主题

TA的得分主题

发表于 2011-4-17 18:56 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
原帖由 xmyjk 于 2011-4-17 18:50 发表


lsftest老师回来啦,好久不见啊。谢谢指教。

哈哈。。。别称老师。。。都是来eh学习的。。。
长假将近,心有点散了。。就溜过来放松放松。。。。
今天先撤了。。。51再聚。。。。

TA的精华主题

TA的得分主题

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

哈哈。。。别称老师。。。都是来eh学习的。。。
长假将近,心有点散了。。就溜过来放松放松。。。。
今天先撤了。。。51再聚。。。。


之前教了我很多网页的知识,称老师应当的,呵呵,五一再见咯。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-19 22:39 , Processed in 0.043848 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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