分享

VBA:如何将指定文件夹下所有工作簿的工作表移动到当前工作簿?

 5jia5 2021-07-14
每天一篇Excel技术图文
微信公众号:Excel星球

NO.568-多表移动到当前工作簿
作者:看见星光
 微博:EXCELers / 知识星球:Excel

HI,大家好,我是星光。Excel会员群里有朋友提了个问题:有一个文件夹,里面有很多工作簿,工作簿内又有很多工作表,现在需要将每张工作表移动到当前工作簿,有没有什么好的解法办法?——打个响指,当然是有的,文末提供了一个一键解决该问题的Excel模版,下载后单击命令按钮,稍等数秒,即可完成目标。


牵牵爪子,一起看个小视频,了解下模版运行过程和效果。


图片

如需实现以上动画展示的功能,示例代码如下▼

代码解析见注释
代码看不全可以左右拖动..▼

'公众号Excel星球-看见星光
Sub GetSheetsCopy()
Dim strPath As String, strBookName As String, strKey As String
Dim strShtName As String, k As Long, wb As Workbook
Dim sht As Worksheet, shtActive As Worksheet
On Error Resume Next
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show Then strPath = .SelectedItems(1) Else: Exit Sub
End With
If Right(strPath, 1) <> '\' Then strPath = strPath & '\'
strKey = InputBox('请输入工作表名称所包含的关键词。' & vbCr _
& '关键词可以为空,如为空,则默认移动全部工作表')
If StrPtr(strKey) = 0 Then Exit Sub
Set shtActive = ActiveSheet '当前工作表,代码运行完毕后,回到此表
With Application
.ScreenUpdating = False
.DisplayAlerts = False
.AskToUpdateLinks = False
.Calculation = xlManual
End With
strBookName = Dir(strPath & '*.xls*')
Do While strBookName <> ''
If strBookName = ThisWorkbook.Name Then
MsgBox '注意:指定文件夹中存在和当前工作簿重名的工作簿!!' & vbCr & '该工作簿无法打开,工作表无法复制。' '当出现重名工作簿时,提醒用户。
Else
Set wb = Workbooks.Open(strPath & strBookName)
For Each sht In wb.Worksheets
If IsEmpty(sht.UsedRange) = False Then
If InStr(1, sht.Name, strKey, vbTextCompare) Then '工作表名称是否包含关键词,关键词不区分大小写
strShtName = Split(strBookName, '.xls')(0) & '-' & sht.Name '复制来的工作表以'工作簿-工作表'形式起名。
ThisWorkbook.Sheets(strShtName).Delete '如果已存在相关表名,则删除
sht.Copy after:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count) '复制到代码所在工作簿
k = k + 1 '复制Sht到代码所在工作簿所有工作表的后面,并累计个数
ActiveSheet.Name = strShtName '工作表命名
End If
End If
Next
wb.Close False '关闭工作簿,不保存
End If
strBookName = Dir '下一个符合条件的文件
Loop
shtActive.Select '回到初始工作表
MsgBox '工作表收集完毕,共收集:' & k & '个'
With Application
.ScreenUpdating = True
.DisplayAlerts = True
.AskToUpdateLinks = True
.Calculation = xlAutomatic
End With
End Sub


需要系统学习Excel,却找不到优质教程?学习Excel的过程中遇到疑难问题,却找不到人及时作出解答?加入我的付费社群,和微软MVP全面精进Excel,学习+答疑都不再是问题……

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多