龙空技术网

VBA中QueryTables提取股票历史交易信息

VBA语言専攻 160

前言:

现时兄弟们对“datatables获取选中行数据”大约比较着重,咱们都需要了解一些“datatables获取选中行数据”的相关知识。那么小编同时在网络上搜集了一些对于“datatables获取选中行数据””的相关内容,希望各位老铁们能喜欢,我们快快来了解一下吧!

【分享成果,随喜正能量】孩子若是平凡之辈,那就承欢膝下;若是出类拔萃,那就展翅高飞;接受孩子的平庸,就像孩子从来没有要求父母,一定要有多么优秀一样。穷不怪父,孝不比兄,苦不责妻,气不凶子。。

《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() '获取网易财经股票的价格和信息

Dim strQuery As String

Sheets("Sheet2").Select

ActiveSheet.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

With ActiveSheet.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"

.Refresh BackgroundQuery:=False

End With

MsgBox ("OK")

End Sub

代码的讲解:

1) Sheets("Sheet2").Select

ActiveSheet.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

以上取得要连接的URL

6) 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实践经验,全部浓缩在下面的各个教程中,教程学习顺序:

【分享成果,随喜正能量】识人不必探尽,探尽则多疑;知人不必言尽,言尽则无友;责人不必苛尽,苛尽则众远;敬人不必卑尽,卑尽则无骨;让人不必退尽,退尽则路窄。是人当寻宁静内而不在他处,当一个人的内在是寂静的,自我就会消失。。

标签: #datatables获取选中行数据