VBA如何取得网页资料时自动整理格式




本书前面几章已基本介绍如何以VBA取得网页资料,本章上一节介绍了台湾银行匯率的网址结构,接下来当然要以VBA方式取得银行匯率资料。有自己先尝试过的读者应该发现,Excel VBA所取得匯率资料,在格式上会有不必要空格和错位的情形,毕竟网页资料不是為Excel所準备的,这种情形不但会发生在台湾银行网页,也很有可能发生在其他网页,為达到有效率取得网页资料,势必要取得资料同时调整格式,本节即介绍如何设计格式调整的VBA程式码。

一、沿用上一章所熟悉的VBA程式码:

VBA如何取得网页资料时自动整理格式 VBA网络爬虫 第1張

二、所图所示,取得资料是网页表格的部份,刚好符合需要。下载会发现Excel栏位变得很寛,所以手动调整了栏寛、将储存格设定為置中对齐,另外和原始网页两相比较,应该是因為表格合併,造成图片标黄色部份有错位的情形。

VBA如何取得网页资料时自动整理格式 VBA网络爬虫 第2張

三、每次下载一个网页,都必须整理格式和调整错位,像这样机械式的操作,便是VBA可以发挥的地方之一。首先,各位读者应该还记得第一章第四节所介绍的「录製巨集程式」。

VBA如何取得网页资料时自动整理格式 VBA网络爬虫 第3張

四、将原始下载资料整理成如图所示。

VBA如何取得网页资料时自动整理格式 VBA网络爬虫 第4張

五、原始录製的巨集程式,总共有152行!

VBA如何取得网页资料时自动整理格式 VBA网络爬虫 第5張

六、整理后的程式码共12行。利用Excel录製的巨集极具参考价值,但是如同第一章第五节「编写巨集程式」所述,现成的程式码可能无法执行、可能太多不必要的设定,因此进一步瞭解研究并加以改造,才是学习VBA的王道。如图所示,新增一个「Module4」,内容参考所录製的巨集「Module3」,於VBA编辑环境可以将两个以上模组都点开视窗,在不同模组复製贴上非常方便。

VBA如何取得网页资料时自动整理格式 VBA网络爬虫 第6張

七、程式码说明如下:

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職場應用,:會計人的Excel小教室PressPlay頻道


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