ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1707|回复: 7

[已解决] 工作簿拆分单个工作表,无法处理

[复制链接]

TA的精华主题

TA的得分主题

发表于 2017-5-18 15:26 | 显示全部楼层 |阅读模式
想把多个工作表分成单个的工作簿,一个工作簿一一个文件测试了几个代码都是1004错误。

Private Sub 分拆工作表()
       Dim sht As Worksheet
       Dim MyBook As Workbook
       Set MyBook = ActiveWorkbook
       For Each sht In MyBook.Sheets
           sht.Copy
           ActiveWorkbook.SaveAs Filename:=MyBook.Path & "\" & sht.Name, FileFormat:=xlNormal     '将工作簿另存为EXCEL默认格式
           ActiveWorkbook.Close
       Next
       MsgBox "文件已经被分拆完毕!"
   End Sub
Sub 工作薄拆分()
'将工作薄按工作表拆分成多个工作薄
Dim PATH As String
PATH = Application.ActiveWorkbook.PATH
Dim sht As Worksheet
Application.ScreenUpdating = False
For Each sht In Sheets
sht.Copy
ActiveWorkbook.SaveAs PATH & "\" & sht.NAME & ".xls" '(工作表名称为文件名)
ActiveWorkbook.Close
Next
Application.ScreenUpdating = True
End Sub
Sub UnhideAllSheets()
For Each Sheet In ActiveWorkbook.Sheets
Sheet.Visible = True
Next
End Sub
QQ图片20170518150410.png
家长信息模板.rar (173.11 KB, 下载次数: 8)

TA的精华主题

TA的得分主题

发表于 2017-5-18 15:45 | 显示全部楼层
其实你已经完成90%的工作了,剩下的事情就是FOR EACH 循环COPY除sheet1外的每一张工作表,然后另存关闭就可以了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-5-18 15:52 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
我还是想用代码解决问题

TA的精华主题

TA的得分主题

发表于 2017-5-18 16:27 | 显示全部楼层
本帖最后由 lsc900707 于 2017-5-18 16:29 编辑
mingming3373 发表于 2017-5-18 15:52
我还是想用代码解决问题
学会给给予帮助者送花,很多问题都很快解决,不信你试试:
Sub 如何将一个Excel工作表的数据拆分成多个工作表()
    tms = Timer
    Application.ScreenUpdating = False '关闭屏幕更新
    arr = Range("A1").CurrentRegion.Value
    lc = UBound(arr, 2) '求取最后一列的列号
    Set rng = Rows(1) '标题行
    Set Dic = CreateObject("Scripting.Dictionary") '创建字典
    For i = 2 To UBound(arr)
        s = arr(i, 16) '订单号,关键字
        If Not Dic.Exists(s) Then '如果字典没有关键字
            Set Dic(s) = Cells(i, 1).Resize(, lc) '把当前行装入到字典中
        Else '否则(字典中存在关键字)
            Set Dic(s) = Union(Dic(s), Cells(i, 1).Resize(, lc)) '把行连合起来
        End If
    Next
    k = Dic.Keys '字典关键字集合
    t = Dic.Items '字典项目集合
    For i = 0 To Dic.Count - 1 '循环关键字的个数
        With Workbooks.Add(xlWBATWorksheet)
            rng.Copy .Sheets(1).[a1]
            t(i).Copy .Sheets(1).[a2]
            .SaveAs Filename:=ThisWorkbook.Path & "\" & k(i), FileFormat:=xlExcel8
            .Close
        End With
    Next
    Application.ScreenUpdating = True '打开屏幕更新
    MsgBox "拆分完成!耗时" & Timer - tms & "秒"
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-5-18 16:30 | 显示全部楼层
lsc900707 发表于 2017-5-18 16:27
学会给给予帮助者送花,很多问题都很快解决,不信你试试:
Sub 如何将一个Excel工作表的数据拆分成多个工 ...

谢谢问题完美解决

TA的精华主题

TA的得分主题

发表于 2018-6-21 22:07 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
lsc900707 发表于 2017-5-18 16:27
学会给给予帮助者送花,很多问题都很快解决,不信你试试:
Sub 如何将一个Excel工作表的数据拆分成多个工 ...

版主,能否先将工作表的数据拆分为本工作簿中的多个工作表,然后在再导出并单独保存为独立的工作簿

TA的精华主题

TA的得分主题

发表于 2018-6-22 06:35 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
lrh788 发表于 2018-6-21 22:07
版主,能否先将工作表的数据拆分为本工作簿中的多个工作表,然后在再导出并单独保存为独立的工作簿

这样的实例很多,自己搜搜看看。

TA的精华主题

TA的得分主题

发表于 2018-6-22 07:06 来自手机 | 显示全部楼层
我搜了很多个,都没版主写的运行速度快!我工作中常用到这样的问题!还请版主费神写下代码!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-26 14:53 , Processed in 0.047942 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表