【分享成果,随喜正能量】孩子若是平凡之辈,那就承欢膝下;若是出类拔萃,那就展翅高飞;接受孩子的平庸,就像孩子从来没有要求父母,一定要有多么优秀一样。穷不怪父,孝不比兄,苦不责妻,气不凶子。。
《VBA信息获取与处理》教程是我推出第六套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。这部教程给大家讲解的内容有:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互联网数据抓取、VBA延时操作,剪贴板应用、Split函数扩展、工作表信息与其他应用交互,FSO对象的利用、工作表及文件夹信息的获取、图形信息的获取以及定制工作表信息函数等等内容。程序文件通过32位和64位两种OFFICE系统测试。是非常抽象的,更具研究的价值。
教程共两册,八十四讲。今日的内容是专题十:“利用QueryTables抓取网络数据”:VBA中QueryTables提取股票历史交易信息
大家好,这讲讲解的是利用QueryTables实现抓取网页数据的具体应用,在上一讲的讲解中,我们看到QueryTables方法利用起来代码确实是非常简单,实现的效果也是非常好的。这讲我们继续讲解这种方法的利用。这一讲我们将完成提取某支股票历史交易信息的数据。
上述的网页中,我要提取的是红色框框起来表的数据,我们进行一下思路的分析:首先清空一下回填数据的区域,然后用QueryTables.Add方法,在网页上提取序号为4的表的数据即可。提取表数据的时候可以选择一下格式的填充。在利用Add方法进行连接的时候要将年和季节的参数给出,同时回填数据的区域选择A5单元格。
为了验证一下网址,我们可以在工作表中的某个单元格中留存一下网址。以备核对。
为了实现上述的思路,我给出了下面的代码:
Dim strQuery As String
ActiveSheet.UsedRange.Offset(4).ClearContents
GPCode = Cells(1, 4).Value
myN = Cells(2, 4).Value
myJ = Cells(3, 4).Value
.RefreshOnFileOpen = False
.BackgroundQuery = True
.SaveData = True
.PreserveFormatting = True
.AdjustColumnWidth = False
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.Refresh BackgroundQuery:=False
End With
End Sub
代码的讲解:
ActiveSheet.UsedRange.Offset(4).ClearContents
以上代码清空数据的回填区域,注意第二句的写法。
2)GPCode = Cells(1, 4).Value 取得股票的代码
3) myN = Cells(2, 4).Value 取得要查询的年
4) myJ = Cells(3, 4).Value 取得要查询的季节
以上取得要连接的URL
在工作表的单元格中备份网址以便核对。
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 提取表的数据无格式
18) .Refresh BackgroundQuery:=False
更新一个查询表数据。Updates an external data range in a QueryTable object.
上面的各个属性给大家进行了详细的讲解,希望大家能了解。
通过上述的代码,就可以完成我们的思路。
当我们点击运行按钮,如图的箭头所示,程序就会开始运行,抓取网页数据到工作表中。当然在实际的应用中,用户可以根据自己的实际需要完成抓取工作到指定的位置。
从而验证了我们思路的正确。从代码到实现的过程,非常的简洁,代码理解也非常的容易,这给我们的学习和利用带来了方便。
本节知识点回向:如何利用QueryTables对象各种属性的理解和掌握。
我20多年的VBA实践经验,全部浓缩在下面的各个教程中,教程学习顺序:
【分享成果,随喜正能量】识人不必探尽,探尽则多疑;知人不必言尽,言尽则无友;责人不必苛尽,苛尽则众远;敬人不必卑尽,卑尽则无骨;让人不必退尽,退尽则路窄。是人当寻宁静内而不在他处,当一个人的内在是寂静的,自我就会消失。。
以上就是正加财经为大家带来的全部内容,希望可以帮助到大家正加财富网内容推荐 | ||
OK交易所下载 | USDT钱包下载 | 比特币平台下载 |
新手交易教程 | 平台提币指南 | 挖矿方法讲解 |