写在前面:
Office办公套件(Word,Excel,PowerPoint等)是我们最常接触的工作软件。它们的功能非常强大:Word可以制作排版精美的文档,Excel有强大的数据统计与处理功能,PowerPoint则可以很好地方便我们向他人展示我们的观点。只要用好这三个软件,处理日常的工作和生活事务就会变得相当容易。
我的office水平并不算很强,有很多简便的操作和函数对我来说仍是未知领域,VBA也只是入门水平,编译不通过或者运行出bug也是经常的事。为了努力提高自己的知识水平,我会不定期地写一些office操作的小手账,强化自身学习的同时,也和大家一起分享。水平粗浅,如有错漏或可以改进之处,欢迎大家提出
提示:这篇学习手账涉及编程,适合有一定编程基础的同志阅读
案例:合并多个工作簿
我们也许经常能遇到如下图所示的情况。
总是有一些令人生厌的数据源,明明放在一张表格里的事情,它偏要给你来上三五张表,甚至十几二十张表。有些表格还分Sheet来存放数据。
这个案例里尚且只有3个工作簿总共不到10个工作表,在数据量大的情况下可能会有几十张表,手动复制粘贴怕是会粘到头皮发麻。
有时候粘贴完了还不够,还要分部门/分人头将表格拆分,以分别发送给相应人员。如果要拆分很多次的话……
这一期我们使用VBA来将这些表格一键整合到一起,同时一键将一个工作簿中的不同工作表分别另存。
撰写打开工作簿并复制其内容的代码
这个代码的核心思路很简单:打开已有的工作簿文件,复制工作簿的每个工作表,粘贴到当前的工作簿之中。
新建一个工作簿之后,首先想办法打开已有的工作簿。VBA对于打开工作簿文件的理解是:给它一个工作簿地址的字符串,然后解析这个字符串地址来打开工作簿。可以使用Application.GetOpenFilename方法,调用打开文件的窗口,获取要打开的工作簿所在地址。这个方法的一般使用形式如下:
Application.GetOpenFilename([FileFilter/文件类型过滤器], [FilterIndex/过滤器索引], [Title/标题], [ButtonText/按钮文本(仅限MAC系统)], [MultiSelect/是否多选])
我们一般用到的就是FileFilter,Title和MultiSelect三个参数。FileFilter是一个字