VBA如何取得网页资料时自动整理格式
网志图文版:
http://www.b88104069.com/archives/4362
本书前面几章已基本介绍如何以VBA取得网页资料,本章上一节介绍了台湾银行汇率的网
址结构,接下来当然要以VBA方式取得银行汇率资料。有自己先尝试过的读者应该发现,
Excel VBA所取得汇率资料,在格式上会有不必要空格和错位的情形,毕竟网页资料不是
为Excel所准备的,这种情形不但会发生在台湾银行网页,也很有可能发生在其他网页,
为达到有效率取得网页资料,势必要取得资料同时调整格式,本节即介绍如何设计格式调
整的VBA程式码。
一、沿用上一章所熟悉的VBA程式码:
二、所图所示,取得资料是网页表格的部份,刚好符合需要。下载会发现Excel字段变得
很寛,所以手动调整了栏寛、将储存格设定为置中对齐,另外和原始网页两相比较,应该
是因为表格合并,造成图片标黄色部份有错位的情形。
三、每次下载一个网页,都必须整理格式和调整错位,像这样机械式的操作,便是VBA可
以发挥的地方之一。首先,各位读者应该还记得第一章第四节所介绍的“录制宏程式”
。
四、将原始下载资料整理成如图所示。
五、原始录制的宏程式,总共有152行!
六、整理后的程式码共12行。利用Excel录制的宏极具参考价值,但是如同第一章第五
节“编写宏程式”所述,现成的程式码可能无法执行、可能太多不必要的设定,因此进
一步了解研究并加以改造,才是学习VBA的王道。如图所示,新增一个“Module4”,内容
参考所录制的宏“Module3”,于VBA编辑环境可以将两个以上模组都点开视窗,在不同
模组复制贴上非常方便。
七、程式码说明如下:
Columns("A:I").ColumnWidth = 10
设定A到I栏的栏寛为10。
Columns("A:I").HorizontalAlignment= xlCenter
设定A到I栏的水平置中。
Range("C1").Cut:Range("B1").Select: ActiveSheet.Paste
Range("B2").Cut:Range("C2").Select: ActiveSheet.Paste
Range("D1").Cut:Range("C1").Select: ActiveSheet.Paste
Range("G1").Cut:Range("E1").Select: ActiveSheet.Paste
以上四行程式码,第一行是剪下“C1”,贴上到“B1”,接下来三行以此类推。程式码中
间的“:”,是VBA程式码小帮手,作用是把两行较短的代码串连起来,和先前介绍的换行
符号“ _”,一个是合并程式码、一个是切开程式码,作用刚好相反。
Range("A1:A2,B1:B2,C1:D1,E1:F1").MergeCells= True
将“A1:A2”、“B1:B2”等范围储存格合并。
Range("A1:F2").Interior.ColorIndex= 45
Range("A1:F2").Font.ColorIndex =2
Range("A1:F2").Font.Bold = True
以上三行程式码,分别设定储存格填满颜色、字型色彩、粗体,关于“Colorindex”颜色
代码,可以设置56种颜色,如下图所示。
Range("A1:F22").Borders.LineStyle= 1
“A1:F22”范围里的储存格字体设置为粗体。
Range("C3:F22").Style ="Comma"
“C3:F22”范围里的储存格数值格式为仟分位、小数点两位。
所有网页取得的资料,如同直接于Excel编制的报表,格式上都需要再作调整。以这一章
为例,汇率资料是会经常性取得的,当然不会想说每次取得、每次都要再调整格式,因此
编写设计相关VBA程式码时,应该把内容格式也考量在内。
取得网页资料是稍微复杂的程式,格式调整相对而言较为简单容易理解,还能像这一节所
示,透过Excel本身录制宏的方式作为参考工具,因此何乐而不为呢。扩大而言,除了
汇率资料,无论是取得哪一类型网页的资料,都可以用这一节相同方式自动调整资料格式
。
本文内容取自《人人做得到的网络资料整理术》:
http://www.books.com.tw/products/0010775391。
延伸阅读:
Excel如何取得台湾银行汇率
http://www.b88104069.com/archives/4348
Excel如何建立财务报表档案资料
http://www.b88104069.com/archives/4332
Excel如何财务报表另存新档
http://www.b88104069.com/archives/4330