ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 请帮忙修改一下自动导入网页部分数据的代码(赠送财富值2000)

[复制链接]

TA的精华主题

TA的得分主题

发表于 2009-6-9 15:39 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
这个问题是所有论坛会员中的很多急需解决的问题,使用数据导入WEB的方法,数据导入不进来,原因可能是网站不允许导入数据,但是以前有高人利用VBA代码可以导入这些数据(详细看下面的附件中代码),所以帮助了我也就等于帮助了大家,我愿意将自己的2000财富赠送给解决问题的人不知道版主能否帮一下忙,届时把财富值给转移给解决问题的人。
这个代码是以前的会员编写的,但是我只需要列出原表中的部分数据(删除几列不需要的数据)怎样修改,里面还缺少 换手率和量比、振幅三列数据的显示,请帮忙添加换手率和量比和振幅三列数据。再就是刷新数据后,是添加根据涨幅率排序的代码
现在发现原作者的新浪网站数据不全,缺少这三列数据,如果改成和讯或雅虎网的数据之后,数据就齐全了。哪一个网站的数据都无所谓,关键是数据齐全,总共大约1280多个股票,谢谢
http://quote.hexun.com/   个和讯网址数据全,并且和我需要的数据格式差不多,进入步骤:行情中心 > 沪深股市 > A股市场 > 全部分类 > 沪深板块,就会找到全部的数据


http://yahoo.compass.cn/stock/newsort.php?market=sz&type=A   沪市A股网址
http://yahoo.compass.cn/stock/newsort.php?market=sh&type=A  深市A股网址


下面的附件是我所需要的数据,上面的附件是原作者的,请按下 按钮 执行刷新操作


[ 本帖最后由 itxianfeng 于 2009-6-13 15:05 编辑 ]

这是原来的表.rar

27.17 KB, 下载次数: 422

股票数据分析.rar

17.88 KB, 下载次数: 558

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-6-9 18:42 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
自己试着修改一下,引用的数据还是对不上号,请帮忙看看
Sheets(1).Cells(idx + 3, 2) = tmp(0) '股票名称
                If tmp(3) = 0 Then
                    Sheets(1).Cells(idx + 3, 3) = "-"
                    Sheets(1).Cells(idx + 3, 4) = "-"   '最新价
                    Sheets(1).Cells(idx + 3, 5) = "-"   '(最新价-昨收)/昨收
                    Sheets(1).Cells(idx + 3, 6) = "-"   '最新价-昨收
                    Sheets(1).Cells(idx + 3, 7) = "-"   '最高
                    Sheets(1).Cells(idx + 3, 8) = "-"   '最低价
                    Sheets(1).Cells(idx + 3, 9) = "-"   '
                    Sheets(1).Cells(idx + 3, 10) = "-"  '
                    
                Else
                    Sheets(1).Cells(idx + 3, 5) = tmp(3)     '最新价
                    Sheets(1).Cells(idx + 3, 4) = (tmp(3) - tmp(2)) / tmp(2) '(最新价-昨收)/昨收=涨跌幅
                    Sheets(1).Cells(idx + 3, 6) = tmp(3) - tmp(2) '最新价-昨收=涨跌额
                    Sheets(1).Cells(idx + 3, 7) = tmp(4)     '最高价
                    Sheets(1).Cells(idx + 3, 8) = tmp(5)     '最低价
                    Sheets(1).Cells(idx + 3, 9) = tmp(15)    '换手率
                    Sheets(1).Cells(idx + 3, 10) = tmp(24)   '量比
   

                End If
        
                Sheets(1).Cells(idx + 3, 14) = tmp(31)  '时间

        Case 18:
                Sheets(1).Cells(idx + 3, 2) = tmp(1)    '股票名称
                Sheets(1).Cells(idx + 3, 4) = (tmp(6) - tmp(2)) / tmp(2) '(最新价-昨收)/昨收
                Sheets(1).Cells(idx + 3, 5) = tmp(6)    '最新价
                Sheets(1).Cells(idx + 3, 6) = tmp(6) - tmp(2) '最新价-昨收=涨跌额
                Sheets(1).Cells(idx + 3, 7) = tmp(4)    '最高价
                Sheets(1).Cells(idx + 3, 8) = tmp(5)    '最低价
                Sheets(1).Cells(idx + 3, 9) = tmp(15)   '换手率
                Sheets(1).Cells(idx + 3, 10) = tmp(24)  '量比
  
            
                Sheets(1).Cells(idx + 3, 14) = tmp(18)  '时间

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-6-10 06:08 | 显示全部楼层
找到原因了,今天进到新浪网才发现里面没有换手率 量比这两个数据
雅虎有数据很全,但是我改的代码不起作用,现在提供一下地址
http://yahoo.compass.cn/stock/newsort.php?market=sz&type=A   沪市A股
http://yahoo.compass.cn/stock/newsort.php?market=sh&type=A  深市A股

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-6-11 06:00 | 显示全部楼层
请能者多劳,将此问题解决,这是很多人需要解决的。

TA的精华主题

TA的得分主题

发表于 2009-6-12 10:11 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
楼主的帖子中的问题解决没有,如解决,请分享,没有帮你顶起

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-6-12 22:04 | 显示全部楼层
原帖由 TY1011 于 2009-6-12 10:11 发表
楼主的帖子中的问题解决没有,如解决,请分享,没有帮你顶起

多谢楼上的关心,目前我只能采用笨办法,全选-复制-粘贴 但这只是适合当前的屏幕,对以后的屏幕需要挨张的操作,太费劲了。

TA的精华主题

TA的得分主题

发表于 2009-6-12 23:12 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
这个网页并不是一次返回所有数据,也是要翻页的,只不过它把翻页功能做到滚动条里去了。
并且没有页面显示,要从这个页面得到数据,要花很长的时间分析,还不一定有结果。
找一个类似百度这样的就好办多了,有现成的代码。


http://baidu.hexun.com/stock/sor ... er=-10&PageNo=1

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-6-13 13:59 | 显示全部楼层
谢谢版主的回复和提供的网址,我的分析要求速度快,就是早上9:30以后,每隔10分钟对当前发生的数据即时用VBA自动分析解决,网上的数据很多是没用的,所以要排除杂乱的信息,留下我需要的重要数据。
其实除了股票代码和股票名称两个必要的条件外,我只需统计涨幅 量比 换手率 振幅这四个数据,其他数据不需要,可以忽略(因为其他因素用K线图和趋势指标就行了)。
我想把需要的数据拷贝到EXCEL中,然后再排序分析。
和讯网站提供的数据基本上与我要求的数据相同,但是就是拷贝不下来,只能一屏一屏的拷贝,速度太慢了,而且拷贝下来还要去掉链接改,股票代码拷贝的也不规范(000022会变成22),
我在 1楼帖子中的下面的那个附件中,利用VBA可以根据用户的需求代码直接的调用出所有的数据,(注意按下那个按钮以后才会自动的刷新数据)但是缺少 量比和换手率和振幅三个重要的项目,我观察了几天VBA代码试着修改,但是终归因为自己的水平有限,不会修改代码只好求救本网站的高手了。

[ 本帖最后由 itxianfeng 于 2009-6-13 14:33 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-6-13 14:29 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
昨天刚刚发现,和讯网站还有一个重要的功能,直接点击数据的标题名称,就会按照标题名称直接自动排序,别的网址都没有这个很重要的功能。
这个自动排序的操作与我所需要的统计分析方法已经很接近了。
http://quote.hexun.com/

[ 本帖最后由 itxianfeng 于 2009-6-13 14:53 编辑 ]

TA的精华主题

TA的得分主题

发表于 2009-6-13 15:01 | 显示全部楼层
如果需要速度的话,我建议使用Sohu的股票数据,Sohu返回的数据只是一小段包含股票实时信息的JSON代码,因此数独还是非常快的。下面是我自己用的一个每天下载股票数据用的代码,根据你的代码列表(从第一列的第2行开始,以"cn_000002"这样的格式)。你可以根据你自己的需要修改一下。
For j = 2 To 1445
        strCode = Sheet7.Cells(j, 1)
        strQuery = "http://hq.stock.sohu.com/cn/" & Right(strCode, 3) & "/" & strCode & "-2.html"
        Set httpreq = New XMLHTTP30
        httpreq.Open "GET", strQuery, False
        httpreq.setRequestHeader "Content-Type", "text/html"
        httpreq.send
        
        If httpreq.Status = 200 Then
            txtContent = httpreq.responseText
            
            arrT = Split(txtContent, "PEAK_ODIA")
            For i = 0 To UBound(arrT)
                If InStr(1, arrT(i), "time'") > 0 Then
                    arrT1 = Split(arrT(i), "','")
                    If arrT1(1) = Format(Month(dDate), "00") And arrT1(2) = Format(Day(dDate), "00") Then
                        arrT1 = Split(arrT(3), "','")
                        If arrT1(5) <> 0 Then
                            Sheet2.Cells(j, iColumn + 1) = arrT1(8)       '换手率
                            Sheet3.Cells(j, iColumn + 1) = arrT1(7)       '成交额
                            Sheet4.Cells(j, iColumn + 1) = arrT1(5)       '成交量
                            Sheet5.Cells(j, iColumn + 1) = arrT1(3)       '涨跌
                            Sheet6.Cells(j, iColumn + 1) = arrT1(2)       '当前值
                            Sheet7.Cells(j, iColumn + 1) = arrT1(14)     '开盘
                            Sheet12.Cells(j, iColumn + 1) = arrT1(11)   '最低
                            Sheet13.Cells(j, iColumn + 1) = arrT1(10)   '最高
                        End If
                    End If
                    Exit For
                End If
            Next i
        Else
            reportErr httpreq.Status
        End If
    Next j
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-13 05:48 , Processed in 0.037939 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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