怎样把合并工作簿分开,怎么将几个工作簿合并成一个

首页 > 实用技巧 > 作者:YD1662024-01-09 19:17:18

最近经常要是把多个工作表拆分成单个的工作簿,一个存货底稿十几二十个工作簿,拆到想吐血。

吐槽了几句后,跟同事吹牛,说我能编个小程序,一键拆分。

学过一点点VBA,冥冥之中,感觉能把代码写出来。思路挺简单的,复制工作表,再另存为指定的文件夹,两部就完事儿了。但是VBA不经常用,得参考着别人的代码才能写出来。

回去之后,打开之前那个学习网站,找到相关的教学视频,把课程上的代码修改了一下,尝试了一下,bug很多。

代码是这样子的:

Sub 拆分到工作簿()

Dim wk As Workbook, ss$, k%

Application.DisplayAlerts = False

For Each sht In Workbooks("VBA拆分工作簿0.xlsm").Sheets

Set wk = Workbooks.Add

k = k 1

Workbooks(1).Sheets(k).Copy Workbooks(2).Sheets(1)

ss = ThisWorkbook.Path & "\" & sht.Name & ".xlsx"

Workbooks(2).Sheets(2).Delete

wk.SaveAs ss

wk.Close

Next

Application.DisplayAlerts = True

MsgBox "拆分工作簿完成!"

End Sub

这代码的bug在于,有且只有一张工作簿的时候才不会出错。这就意味着,要把其他所有的工作簿关掉。而且,还要把工作表移到有代码的那张工作表中,保存的路径也很粗暴。

既然牛都吹上天了,拿出这么个东西来,下次再吹牛的时候谁信呐。

于是,又摸索了找到了以下代码:

Sub 快速拆分工作簿()

Dim sht As Worksheet, mypath$

Application.DisplayAlerts = False

'取消显示系统警告和消息

Application.ScreenUpdating = False

'取消屏幕刷新

With Application.FileDialog(msoFileDialogFolderPicker)

'选择保存工作薄的文件路径

AllowMultiSelect = False

'不允许多选

If .Show Then

mypath = .SelectedItems(1)

'读取选择的文件路径

Else

Exit Sub

'如果没有选择保存路径,则退出程序

End If

End With

If Right(mypath, 1) <> "\" Then mypath = mypath & "\"

Application.DisplayAlerts = False

Application.ScreenUpdating = False

For Each sht In Worksheets

'遍历工作表

sht.Copy

'复制工作表,工作表单纯复制后,成为活动工作薄

With ActiveWorkbook

.SaveAs mypath & sht.Name, xlWorkbookDefault

'保存活动工作薄到指定路径下

.Close True '关闭工作薄

End With

Next

MsgBox "处理完成。", , "提醒"

Application.ScreenUpdating = True '恢复屏幕刷新

Application.DisplayAlerts = True '恢复显示系统警告和消息

End Sub

这次的宏不用关掉其他的工作簿了,还可以选择要保存的路径,尝试了几次,还是得把工作表移到代码所在的工作簿才会万无一失,跨工作簿使用偶尔也会出错。应该是for循环中的变量太宽泛了,又或者是其他的原因,总之,VBA不是很好,解决不了这个难题。

后来再继续找,没找到更好的代码,但是找到了一个别人写好的小程序。

下载一试,很完美。

安装好之后,会在Excel的菜单栏上多一栏,

怎样把合并工作簿分开,怎么将几个工作簿合并成一个(1)

点击“工作簿管理”出现这个界面

怎样把合并工作簿分开,怎么将几个工作簿合并成一个(2)

左边是可选工作表,把你想要拆分的工作表移到右边,在“目标文件夹”中选择拆分之后要保存的路径,点击拆分就完成了。

除了拆分,还有合并,可以把不同工作簿中的工作表合并到同一张工作簿中,操作跟拆分类似,区别在于选择“目标文件夹”不是保存路径,而是可选工作簿的来源。

嗯,就这么简单。它的名字叫易用宝,下载链接在文末,百度网盘链接。安装好之后需要激活码。我知道激活码是什么,但不能在这里告诉你们。安装好之后,随便点击其中一个功能,按照他们的提示去获取就行了,很简单,完全免费的。

这个小程序是excel home团队写的。在这里,向大神们致敬。

还有的小伙伴叫我推荐学excel的书,我觉得excel home的就不错,买过一本关于VBA基础。至于视频,在往期的文章里有链接。都是免费的,而且是良心干货。

这个小工具对于合并工作表,只能把工作表合并到工作簿中,还有没有实现把不同工作簿的工作表合并到一张工作表中。这个功能在office2016版本中,用一句SQL语句就能实现,而且能够随着数据源的更新而更新,很强大。之前的版本也能用,但有很多bug。

还有就是,一键生成银行询证函,生成企业询证函等等,这些等有空了再去研究研究。做为审计少年,这些东西应该懂,是吧?

虽然说,不会VBA也能拿着别人做好的模版来用,但我觉得,还是学一学VBA为好,因为别人的模版只是在一定情况下适用,只要发生一点小变化,不懂维护的话,就只能望洋兴叹了。听说我们所之前有个很厉害的大神,写了很多审计底稿模版,替代测试,凭证抽查什么的,一键就能生成。后来那位传说哥离职了,没人维护,全都没发用了。现在还能听到同事们经常提起,曾经的曾经,这儿存在着一位很牛逼的人物。

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.