本文于2023年7月31日首发于本人同名公众号:Excel活学活用,更多文章案例请搜索关注!
内容提要
- 文件合并功能扩展
- EXCEL合并、WORD合并、PDF合并、图片合并
大家好,我是冷水泡茶,前天我写了一篇文章回答粉丝朋友的代码错误问题,但我没有提到他的代码是干什么用的,其实,他的代码是用VBA合并PDF文件。
起初,我有点不以为然:
后来,我一想,我们不是分享过EXCEL文件的合并吗?是不是可以资源整合一下呢?WORD文件可不可以合并?图片文件可不可以合并成PDF?
突然觉得有必要来搞点事情。经过两天的考虑、写代码、测试,终于基本达成目标,我们一起来看一下吧:
设计思路
1、参考我们前面文件拆分工具,使用用户窗体。
2、不同的合并类型,通过选项按钮来判定。
3、通过FSO文件系统对象来选择文件夹,包括待合并文件所在文件夹,合并文件保存文件夹。
4、通过FSO文件系统对象来遍历文件夹下所有文件,根据不同的合并类型,选择不同后缀名的文件进行处理。
5、EXCEL文件,可以选择跳过第一行表头。
6、WORD文件,可以选择每个文件另起一页。
7、PDF文件,通过Acrobat库打开文件操作。
8、图片文件,参照PDF合并,用Acrobat打开再插入页面。
9、保存文件名可自定义。
实现过程
1、设计窗体
2、编写代码:
这里就列一些模块名称,稍作解释,完整代码放在第二条文章。
Private Sub UserForm_Initialize()
窗体初始化
默认保存文件夹为当前程序文件所在文件夹
Private Sub CkbName_Click()
自定义保存文件名称
Private Sub CmdChoosePath_Click()
选择待合并文件所在文件夹
Private Sub CmdConfirm_Click()
确认按钮,根据不同的选项运行不同的代码,
调用不同的过程
Private Sub CmdChooseSavePath_Click()
选择保存文件的文件夹
Private Sub CombineExcel()
合并EXCEL文件过程
Private Sub CombinePDF()
合并PDF文件过程
Private Sub CombineWord()
合并WORD文件过程
Private Sub CombinePicturesToPDF()
合并图片文件为PDF文件
Function ConvertPicToPDF(picName, pdfPath) As String
自定义图片转PDF函数
取得转换为PDF的文件名
Function wContinue(Msg) As Boolean
自定义函数确认继续执行
Private Sub CmdExit_Click()
退出窗体
其他
1、在写图片转为PDF过程中,费了比较大的周折。本来以为用PDF打开再插入到合并文件中,但就是跑不通。最后,自定义了一个函数,把图片转为PDF文件,存到一个临时目录,并记下保存的文件名,然后再参照合并PDF过程进行合并。
2、合并PDF过程,参考那位粉丝朋友的代码,作了一些调整,在此表示感谢。
3、合并EXCEL过程,基本照搬我们前面的代码。EXCEL工作表的合并,默认要求是相同数据结构的工作表,否则合并就没有什么意义了。本来还想做一个把所有工作表全部复制到一个工作簿中,后来觉得意义不是很大,加之时间关系,就算了。
4、合并文件顺序,应该是按照文件名升序。
5、不同类型的文件可以放在同一个文件夹下,只针对某一类文件进行合并。
6、本工具经过简单测试运行正常,但不排除还有其它BUG。若有朋友发现的,请在评论区留言,感谢!
本文暂时没有评论,来添加一个吧(●'◡'●)