上次的小试牛刀,让我爽了一把,这次我想静下心来,看看这些代码都是什么意思,怎么就实现了文件的打开,处理了呢?
先从简单的开始吧,还记得打开单个文件的代码吗:
1 | '选取单个文件打开后,处理并关闭 |
就从这个开始吧
先说下VBA代码的构成。sub XXX()和End Sub是成对出现的,它们定义了一个过程,也就是一组动作,所有的VBA代码都是被它们框在里面的。XXX是过程名,可根据自己的需要命名,一般是代表这个过程所实现的功能的关键词。
接下来里面的内容,一一来说一下:
1 | Dim str As String |
以上代码的作用是定义变量,或者叫声明变量,换句话说,就是接下来要使用到的东西,先把它广而告之,否则后面没法用,因为它从来没出现过,电脑不认识啊
比如上面的Dim str As String
就是声明了一个名叫str的东西,告诉电脑,它是一个string类型的变量。Dim wb As Workbook
则是声明了一个名叫wb的东西,同样是告诉电脑,它是一个workbook类型的变量。
什么?!workbook?这玩意听着有些耳熟啊。
是的,它就是EXCEL工作簿,也就是此处定义了wb是一个EXCEL工作簿文件,而上面的string则是“字符串”的意思,即定义了str是一个字符串变量。
顾名思义,变量是可变的,它其实就像一个容器一样,可以向里面放东西。dim的作用不仅在于声明了一个变量,同时也给这个变量打上了一个标签(类型),指定了这个变量容器里装什么类型的东西(数据)。
这一步很重要,因为涉及到后续这个变量能够具有的属性和方法。
属性是什么?方法又是什么鬼?
打个比方吧:假如定义了一个变量xiaoming,类型是“person”(代码像这样:dim xiaoming as person)
那么xiaoming就具有了person(人)的属性,比如:有鼻有眼有手有脚…
同时xiaoming也具有了person(人)的方法,比如:吃饭、走路、睡觉…
简单地说,属性基本是名词,方法则是动词,或者说属性是有什么,而方法则是会做什么
OK,基本概念先说到这里,咱们继续往下走…
1 | str = Application.GetOpenFilename("Excel文件,*.xls*", , "请选择") |
有了前面的铺垫,你应该知道str里面装的是什么了吧?
是的,它是string类型的变量,所以里面装的是字符串,也只能用来装字符串类型的数据。
接下来要注意的是这里的=
可不是常规认识的那个“等号”,它的作用是将后面的内容赋值给前面的变量,这里就是赋值给str。
如果有了变量是容器的概念,相对就比较容易理解赋值是什么东东了,其实就是往变量里装东西的这个动作,至于为啥不是等号的意思,可以这么想:
这次我往容器里装了一块糖,下次换了,往里面装了一块巧克力,那你说这个容器等于糖还是巧克力?
那么VBA中的“等号”咋表示呢?==
用两个=
表示Application.GetOpenFilename("Excel文件,*.xls*", , "请选择")
起到的作用就类似于手动打开一个文件选取窗口,并且所选取的只能是.xls*为扩展名的文件。
选取文件后,程序就将这个文件的路径赋值给了str,接下来这句Set wb = Workbooks.Open(str)
就是以EXCEL工作簿的方式打开str这个文件,并把打开后的文件赋值给wb这个变量。
接下来,你就可以对wb为所欲为了,就像打开了EXCEL文件后,你可以编辑里面的数据,修改里面的表名,做一些数据统计…等等,总之,手动能做的,程序都可以实现。
后面的 wb.save wb.Close
就不用说了吧,就是将修改过后的EXCEL文件保存,然后关闭。像什么都没发生过一样,其实程序已帮你做完了一切。
偷着乐吧…
注:Application.GetOpenFilename()
没有详细说,因为官方文档里介绍很明白,实在不敢班门弄斧,我不配!!!
想要了解,可自己baidu,当然能google最好。
好了,这篇就到这里,喝点水,吃点干粮,再继续赶路。