作者moodyblue ()
看板Accounting
标题【Excel VBA网路爬虫】InputBox方法
时间Mon May 11 22:01:27 2020
【Excel VBA网路爬虫】整理好央行网址储存格清单,InputBox方法取得金融资讯
网志图文版:
https://www.b88104069.com/archives/4499
上一节介绍InputBox函数网路爬虫,执行巨集时可能要开浏览器网页复制网址,本节进一
步InputBox方法,先在Excel整理好网址表格清单,引用储存格参照取得网页资料。
一、央行金融指标:
希望一次取得中央银行三个金融指标的资料,分别下载到三个工作表。
二、VBA工作表属性:
进入VBA编辑环境,在左边的专案视窗中,「Microsoft Excel物件」资料夹选择「工作表
2(平均存款利率)」。如图可以清楚看到,在VBA里面工作表有两个不同代号,例如在活页
簿上的标签名称是「平均存款利率」、在VBA里则是「工作表2」,而且参考上一个步骤的
撷图,可以了解活页簿上工作表次序,和实际Excel系统里的名称顺序不一样。以范例来
说,其实有个工作表1被删除,然後是「工作表4(汇总)」移到最前面了。如此了解Excel
的工作表架构(程式语言的专业术语为物件模型),是进一步编写VBA程式码的基础。
三、InputBox函数限制
首先如果沿续上一节的InputBox函数,会发现只要,将游标移到对话方块外,马上变成一
颗转个不停的蓝色小球,因为InputBox函数只能直接输入文字,若是想直接引用储存格参
照,必须改用InputBox方法。(VBA程式码的基本结构之一:「物件.方法」,代表对某个
Excel物件执行某个指令方法)。
四、改用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))」,应该较容易理解两个之间的差异。
五、参照引用网址
於想要执行程式的工作表,例如先移到「平均存款利率」工作表,执行巨集,跳出「汇入
网址」对话方块,选择「汇总」工作表的「C2」储存格,就是央行平均存款利率的网址,
在对话方块立即出现「汇总!$C$2」。
六、汇入目的储存格
接着出现「汇入目的」对话方块,选择「平均存款利率」工作表的「A1」储存格,在对话
方块立即出现「$A$1」。
七、网址清单取得网页资料
成功汇入网页内容,以相同方法取得三个工作表资料。
最後再补充提醒,由於这里范例程式码为「With ActiveSheet.QueryTables.Add」,「
ActiveSheet」意思是目前现用工作表,所以假设想将资料汇入「平均存款利率」工作表
,必须在执行巨集之前,必须在「平均存款利率」工作表选取任何一个储存格,如此现用
工作表便会是「平均存款利率」工作表。如果希望更巨集聪明一点,直接将资料汇入任何
指定的工作表,程式码会稍为复杂一点,於此暂不介绍。
延伸阅读:
Excel VBA网路爬虫,InputBox函数开启对话方块,输入中央银行网址取得利率
https://www.b88104069.com/archives/4485
Excel VBA巨集也能汇出汇入,轻松备份共享,完整说明VBA网路爬虫程式
https://www.b88104069.com/archives/4467
Excel巨集抓取网页资料出错了!进入VBA简单修改,开始成为程式设计师
https://www.b88104069.com/archives/4432
--
周末,我们继续Excel:=>21.心得=>5.其他=>3.office
会计人的Excel小教室:
https://www.facebook.com/acctexcel
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 112.22.232.64 (中国)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Accounting/M.1589205693.A.98E.html