VBA中QueryTables提取股票历史交易信息
优采云 发布时间: 2022-07-06 16:49VBA中QueryTables提取股票历史交易信息
【分享成果,随喜正能量】孩子若是平凡之辈,那就承欢膝下;若是出类拔萃,那就展翅高飞;接受孩子的平庸,就像孩子从来没有要求父母,一定要有多么优秀一样。穷不怪父,孝不比兄,苦不责妻,气不凶子。。《VBA信息获取与处理》教程是我推出第六套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。这部教程给大家讲解的内容有:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互联网数据抓取、VBA延时操作,剪贴板应用、Split函数扩展、工作表信息与其他应用交互,FSO对象的利用、工作表及文件夹信息的获取、图形信息的获取以及定制工作表信息函数等等内容。程序文件通过32位和64位两种OFFICE系统测试。是非常抽象的,更具研究的价值。教程共两册,八十四讲。今日的内容是专题十:“利用QueryTables抓取网络数据”:VBA中QueryTables提取股票历史交易信息
第三节 利用QueryTables提取某支股票历史交易信息数据大家好,这讲讲解的是利用QueryTables实现抓取网页数据的具体应用,在上一讲的讲解中,我们看到QueryTables方法利用起来代码确实是非常简单,实现的效果也是非常好的。这讲我们继续讲解这种方法的利用。这一讲我们将完成提取某支股票历史交易信息的数据。
实用场景:利用QueryTables,抓取网易财经某支股票的历史交易数据,这里我选择的股票是紫金矿业,抓取2020年第2季度的数据,网易财经网址是:,股票在当今社会即是个人投资的方式,又是经济社会发展的晴雨表,关注的人都非常多,也希望在市场运作中能分析出一套可以用于自己投资理财的数据,但股票有风险,大家还是要小心谨慎,不要被表面的高利所诱惑,我这里只能提供给大家基础数据积累,不涉及股票操作。1 利用QueryTables提取某支股票历史交易信息数据的思路分析为了实现上述的场景,我们先看一看上述提供网址提供网页的信息:
上述的网页中,我要提取的是红色框框起来表的数据,我们进行一下思路的分析:首先清空一下回填数据的区域,然后用QueryTables.Add方法,在网页上提取序号为4的表的数据即可。提取表数据的时候可以选择一下格式的填充。在利用Add方法进行连接的时候要将年和季节的参数给出,同时回填数据的区域选择A5单元格。为了验证一下网址,我们可以在工作表中的某个单元格中留存一下网址。以备核对。2 利用QueryTables提取某支股票历史交易信息数据的代码实现为了实现上述的思路,我给出了下面的代码:
Sub myNZA() '获取网易财经股票的价格和信息 DimstrQuery As StringSheets("Sheet2").SelectActiveSheet.UsedRange.Offset(4).ClearContents GPCode= Cells(1, 4).Value myN= Cells(2, 4).Value myJ= Cells(3, 4).Value strQuery= "URL;" & GPCode strQuery= strQuery & ".html?year=" & myN strQuery= strQuery & "&season=" & myJ Cells(1,"l") = strQuery WithActiveSheet.QueryTables.Add(Connection:=strQuery, Destination:=Range("A5")) .Name= "history" .RefreshOnFileOpen= False .BackgroundQuery= True .SaveData= True .PreserveFormatting= True .AdjustColumnWidth= False .RefreshPeriod= 0 .WebSelectionType= xlSpecifiedTables .WebFormatting= xlWebFormattingNone .WebTables= "4" .RefreshBackgroundQuery:=False EndWith MsgBox("OK")End Sub
代码的讲解:
1) Sheets("Sheet2").SelectActiveSheet.UsedRange.Offset(4).ClearContents以上代码清空数据的回填区域,注意第二句的写法。2)GPCode = Cells(1, 4).Value 取得股票的代码3) myN = Cells(2, 4).Value 取得要查询的年4) myJ = Cells(3, 4).Value 取得要查询的季节5)strQuery = "URL;" & GPCode strQuery= strQuery & ".html?year=" & myN strQuery= strQuery & "&season=" & myJ以上取得要连接的URL6) Cells(1, "l") = strQuery在工作表的单元格中备份网址以便核对。7)With ActiveSheet.QueryTables.Add(Connection:=strQuery, Destination:=Range("A5"))上述代码指定加载网址, 的数据 ,Range("a5")是回填给工作表区域的左上角的单元格。8).Name = "history"
9).RefreshOnFileOpen = False 如果每次打开工作簿时,数据表高速缓存或查询表自动更新,则为 True。 默认值为 False 。 读取/写入 Boolean。 10).BackgroundQuery = True 是否在后台异步执行,如果查询表的查询是异步执行(在后台执行)的,则为True。11) .SaveData = True 如果将Data数据随工作簿一起保存,则为 True。 如果仅保存数据透视表的定义,则为 False。 读取/写入 Boolean。12) .PreserveFormatting = True 如果将数据前五行的任何常用格式设置应用到查询表的新数据行,则为 True。 未使用的单元格未格式化。 如果将应用到查询表的最新一次自动套用格式应用于新数据行,则属性为 False。 默认值为 True。对于数据库查询表, 默认格式设置为xlSimple 常量。刷新查询表时,将对查询表应用新的自动套用格式样式。 只要 PreserveFormatting 的值为 False,则 AutoFormat(自动套用格式)就会被设置为 None。 因此, 在PreserveFormatting之前设置的任何自动套用格式设置为False , 并且在刷新查询表之前不会生效, 并且生成的查询表不会应用任何格式。
13) .AdjustColumnWidth = False 如果每次刷新指定的查询表时列宽都会自动调整为最适合的宽度,则为True。 如果每次刷新时列宽不进行自动调整,则为 False。 默认值为 True 。14) .RefreshPeriod = 0 返回或设置两次刷新之间的时间间隔。 读/写 Long。将周期设置为 0(零),则会禁用自动定时刷新,并且等同于将该属性设置为 Null。RefreshPeriod 属性的值可以是从 0 到 32767 的整数。15) .WebSelectionType = xlSpecifiedTables 指定表16) .WebFormatting = xlWebFormattingNone 提取表的数据无格式17) .WebTables = "4" 选择序号为4的表18) .Refresh BackgroundQuery:=False 更新一个查询表数据。Updates an external data range in a QueryTable object.
上面的各个属性给大家进行了详细的讲解,希望大家能了解。
代码截图:
通过上述的代码,就可以完成我们的思路。3 利用QueryTables提取某支股票历史交易信息数据的实现效果当我们点击运行按钮,如图的箭头所示,程序就会开始运行,抓取网页数据到工作表中。当然在实际的应用中,用户可以根据自己的实际需要完成抓取工作到指定的位置。
从而验证了我们思路的正确。从代码到实现的过程,非常的简洁,代码理解也非常的容易,这给我们的学习和利用带来了方便。
本节知识点回向:如何利用QueryTables对象各种属性的理解和掌握。
我20多年的VBA实践经验,全部浓缩在下面的各个教程中,教程学习顺序:
【分享成果,随喜正能量】识人不必探尽,探尽则多疑;知人不必言尽,言尽则无友;责人不必苛尽,苛尽则众远;敬人不必卑尽,卑尽则无骨;让人不必退尽,退尽则路窄。是人当寻宁静内而不在他处,当一个人的内在是寂静的,自我就会消失。。