打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Excel-VBA把工作薄中的工作表拆分独立工作薄

应用场景

把工作薄的工作表拆分为独立的工作薄


知识要点

1:Application.FileDialog(msoFileDialogFolderPicker) 通过对话框选择存放路径

2:Workbook.SaveAs 方法 在另一不同文件中保存对工作簿所做的更改。

3:.Find('*]*'!' 查找工作表中是否存在外部引用,如有则转换为值

4:Sheets.Copy(Before, After) 方法 将工作表复制到工作簿的另一位置,如果既不指定 Before 也不指定 After,则将新建一个工作簿,其中包含复制的工作表。

5:Shell 函数 执行一个可执行文件 Shell 'EXPLORER.EXE'  用EXPLORER.EXE 打开文件夹

6:explorer.exe是Windows程序管理器或者文件资源管理器,它用于管理Windows图形壳,包括桌面和文件管理



Sub 把工作薄拆分为单个工作表()

    On Error Resume Next

    Dim Pathstr As String, i As Long, Activewb As String, Cell As Range, Firstaddress As String

    With Application.FileDialog(msoFileDialogFolderPicker)

        '创建文件对话框的实例

        If .Show Then  '如果在对话框中单击了 确定 按钮

            Pathstr = .SelectedItems(1)  '将选定的路径赋予变量

        Else

            Exit Sub

        End If

    End With

    Pathstr = Pathstr & IIf(Right(Pathstr, 1) = '\', '', '\') '如果不是\,末尾添加\

    Application.ScreenUpdating = False

    Activewb = ActiveWorkbook.Name  '记录活动工作薄名

    For i = 1 To Sheets.Count '循环所有工作表

        Sheets(i).Copy  '复制工作表到新工作薄中(忽略了参数)

        '将工作薄另存,文件名由工作表觉得,而文件的后缀名则由excel程序的版本决定

        ActiveWorkbook.SaveAs Filename:=Pathstr & Workbooks(Activewb).Sheets(i).Name & IIf(Application.Version * 1 < 12, '.xls', '.xlsx'), FileFormat:=xlWorkbookDefault, CreateBackup:=False

        With ActiveSheet.UsedRange '引用已用区域

            '查找“=*]*'!”,也就是检查是否存在外部引用

            Set Cell = .Find('*]*'!', LookIn:=xlFormulas, searchorder:=xlByRows, lookat:=xlPart, MatchCase:=True)

            If Cell Is Nothing Then GoTo Line

            Firstaddress = Cell.Address  '记录第一个找到的地址

            Do

                Cell = Cell.Value   '将公式转换为数值

                Set Cell = .FindNext(Cell) '查找下一个

                If Cell Is Nothing Then Exit Do '如果未找到,退出循环

                If Cell.Address = Firstaddress Then Exit Do

            Loop

        End With

Line:

        ActiveWindow.Close '关闭窗口

        Workbooks(Activewb).Activate '激活待拆分的工作薄

    Next i

    Application.ScreenUpdating = True

    Shell 'EXPLORER.EXE' & Pathstr, vbNormalFocus '打开文件夹

End Sub


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
VBA|多个工作表中的数据自动合并到一个工作表
如何将EXCEL工作薄按工作表拆分为多个工作薄
Excel教程:excel拆分工作簿(表),一键拆分几百个文件,只需3秒!
一个工作簿拆分多个工作表的办法用VBA-代码
一秒快速拆分工作簿中多个工作表,不要说你还是停留在复制粘贴
按某个字段拆分工作表 | 祝新年快乐!
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服