【Excel VBA网络爬虫】整理好央行网址单元格清单,InputBox方法取得金融信息




上一节介绍InputBox函数网络爬虫,执行宏时可能要开浏览器网页复制网址,本节进一步InputBox方法,先在Excel整理好网址表格列表,引用单元格参照取得网页数据。

一、央行金融指标:

希望一次取得中央银行三个金融指针的资料,分别下载到三个工作表。

【Excel VBA网络爬虫】整理好央行网址单元格清单,InputBox方法取得金融信息 VBA网络爬虫 第1張

二、VBA工作表属性:

进入VBA编辑环境,在左边的项目窗口中,「Microsoft Excel对象」文件夹选择「工作表2(平均存款利率)」。如图可以清楚看到,在VBA里面工作表有两个不同代号,例如在活页簿上的卷标名称是「平均存款利率」、在VBA里则是「工作表2」,而且参考上一个步骤的撷图,可以了解活页簿上工作表次序,和实际Excel系统里的名称顺序不一样。以范例来说,其实有个工作表1被删除,然后是「工作表4(汇总)」移到最前面了。如此了解Excel的工作表架构(程序语言的专业术语为对象模型),是进一步编写VBA程序代码的基础。

【Excel VBA网络爬虫】整理好央行网址单元格清单,InputBox方法取得金融信息 VBA网络爬虫 第2張

三、InputBox函数限制

首先如果沿续上一节的InputBox函数,会发现只要,将光标移到对话框外,马上变成一颗转个不停的蓝色小球,因为InputBox函数只能直接输入文字,若是想直接引用单元格参照,必须改用InputBox方法。(VBA程序代码的基本结构之一:「物件.方法」,代表对某个Excel对象执行某个指令方法)。

【Excel VBA网络爬虫】整理好央行网址单元格清单,InputBox方法取得金融信息 VBA网络爬虫 第3張

四、改用InputBox方法

修改VBA程序代码如图所示,绿色部份是将上一节原来的代码,以单引号转换成单纯文本(非程序代码),蓝底白字是主要更改的程序代码,由InputBox函数改为InputBox方法。「WebAress1 = Application.InputBox(“请选择网页网址所在单元格”, “汇入网址”, Type:=8)」这是InputBox方法的标准结构,和InputBox函数比起来,多了一个「Type:=8」,表示输入类型为单元格参照。「DesCell = Application.InputBox(“请选择数据开始单元格”, “汇入目的”, Type:=8).Address」这一行程序代码和上一行非常接近,只是最后多加了一个「.Address」,关于这个有两点说明:

第一点,如前所述,「物件.方法」是VBA程序代码的基本结构之一,相类似的是「对象.属性」,于此是将所输入的单元格作为对象,以「.Address」传回其VBA语言形式的范围参照。

第二点,「WebAress1 = Application.InputBox」会将「WebAress1」设定为单元格的值,也就是网址,「DesCell = Application.InputBox.Address」会将「DesCell」设定为单元格本身(储存格物件),对比接着后面的「WebAress2 = “URL;” & WebAress1」、「Destination:=Range(DesCell))」,应该较容易理解两个之间的差异。

【Excel VBA网络爬虫】整理好央行网址单元格清单,InputBox方法取得金融信息 VBA网络爬虫 第4張

五、参照引用网址

于想要执行程序的工作表,例如先移到「平均存款利率」工作表,执行宏,跳出「汇入网址」对话框,选择「汇总」工作表的「C2」单元格,就是央行平均存款利率的网址,在对话框立即出现「汇总!$C$2」。

【Excel VBA网络爬虫】整理好央行网址单元格清单,InputBox方法取得金融信息 VBA网络爬虫 第5張

六、汇入目的单元格

接着出现「汇入目的」对话框,选择「平均存款利率」工作表的「A1」单元格,在对话框立即出现「$A$1」。

【Excel VBA网络爬虫】整理好央行网址单元格清单,InputBox方法取得金融信息 VBA网络爬虫 第6張

七、网址列表取得网页数据

成功汇入网页内容,以相同方法取得三个工作表数据。

【Excel VBA网络爬虫】整理好央行网址单元格清单,InputBox方法取得金融信息 VBA网络爬虫 第7張

最后再补充提醒,由于这里范例程序代码为「With ActiveSheet.QueryTables.Add」,「ActiveSheet」意思是目前现用工作表,所以假设想将数据汇入「平均存款利率」工作表,必须在执行宏之前,必须在「平均存款利率」工作表选取任何一个单元格,如此现用工作表便会是「平均存款利率」工作表。如果希望更宏聪明一点,直接将数据汇入任何指定的工作表,程序代码会稍为复杂一点,于此暂不介绍。

本文内容取自《人人做得到的网络数据整理术》,书本仍然是最好的学习方法,今天就买本书吧!

金石堂网络书店网址:

https://www.kingstone.com.tw/basic/2014941521928


有系統、全面性的學習Excel職場應用,:會計人的Excel小教室PressPlay頻道


當前文章分類:
VBA网络爬虫