VBA如何批次取得网页资料
网志图文版:
http://www.b88104069.com/archives/4366
如果你进入Excel颜色代码表的连结(
https://docs.microsoft.com/zh-tw/office/vba/api/Excel.ColorIndex)),会看到代
码表。那张表本身便是VBA程式码自动产生的,运用的是一般程式设计里都有的“循环”
概念。在依照某个规则大量运行程式的场合,非常适合设计循环。这一节首先以颜色代码
表为例,简单介绍循环如何设置,接着再以这一章取得汇率的主题,运用循环批次取得一
整年12个月的历史汇率。
一、图片所示的程式码说明如下:“Cells.Clear”先清除工作表。“For i = 1 To 14
Step 1”以变量“i”设置循环程式,从“1”开始到“14”,“Step 1”表示1、2、3数
列的顺序,如果是“Step 2”便是2、4、6数列,这里是为求范例完整加了个“Step 1”
,其实这是系统默认值可以省略的。“Cells(1, i)”是储存格对象,里面的“1”代表第
几列、“i”代表第几栏,“Value”为储存格值的属性,“Interior.Colorindex”为储
存格背景色彩的属性。图片绿色部份前面加“'”为注记文字,这是编写程式的惯常用法
。
二、执行宏“Colorindex”的结果如图所示。
三、依照相同思惟,外面再加一层变量“j”循环,计算式作一些变化,编写如图所示的
程式,执行结果便是上一节最后一张颜色代码图。
四、接下来要将循环设计的概念,嵌入取得汇率资料的程式里,以便一次取得数期的历史
汇率。首先,整理先前的程式码,取消InputBox,回到一开始直接写入网址及位置的方式
,最后加一个栏寛及水平置中的格式调整,避免每次下载完字段变得很寛,很不方便,其
余颜色及框线仅仅是美观考量,暂不设置。
五、执行结果如图所示,标黄色部份是第23行,也就是网页一个月的汇率资料有22行,如
果要一次取得12个月的资料,等于是设置“step 22”的循环,让第二个月的资料从第23
行开始,第三个月之后依序类推。
六、在上一步骤的基础上,设计循环,编写程式如图所示。这里用到的概念有变量计算、
循环设置、条件判断、格式调整,除了条件判断,其他概念在先前章节都有相关范例,条
件判断在下一节再多加介绍。
七、执行“DownloadWeb”宏,成功一次取得2015年12个月的美金历史汇率,下载到
Excel工作表上,因资料量多,以20%比例呈现,Excel会自动加上外部资料的标题,从“
外部资料1”到“外部资料12”,包含中间空白总共有300行的历史汇率明细。
从略缩图来看,显然在不同月份的资料表之间,留有许多行的空白,在格式也没有多作设
定,必须下载完资料后再作整理。另外这个程式码是固定的,例如我如果想要的是2016年
的美金资料、或者是2015年的欧元资料,只能再修改程式码,凡此种种,都需要进一步设
计完善,这个会在往后章节继续介绍。
延伸阅读:
VBA如何取得网页资料时自动整理格式
http://www.b88104069.com/archives/4362
Excel如何取得台湾银行汇率
http://www.b88104069.com/archives/4348
Excel如何建立财务报表档案资料
http://www.b88104069.com/archives/4332