【原创】VBA(实验15)批量把多个worksheet保存为workbook

 

 

批量把 worksheet保存为workbook

 

方法1


 

Sub saveas()   '这个是不是就是做打表工具的一部分?比如这就是导表


Dim wb As Workbook
Dim sht As Worksheet
Dim strpath As String



strpath = ThisWorkbook.path & "\"            ‘这样能自动读路径,好技巧
For Each sht In ThisWorkbook.Worksheets
Rem For Each wsh In ActiveWindow.SelectedSheets
Rem 这个是可以先选择部分的表?
    sht.Copy              ‘这里不写会怎么样?
    With ActiveWorkbook   '这里不能用thisworkbook了,因为被关闭了?
         .saveas strpath & sht.Name & ".xlsx", FileFormat:=xlOpenXMLWorkbook
         .Close
    End With
Next


End Sub

 

方法3 savecopyas  也不好用,只存为了一个workbook


strpath = ThisWorkbook.path & "\"            '这样能自动读路径,好技巧
For Each sht In ThisWorkbook.Worksheets
Rem For Each wsh In ActiveWindow.SelectedSheets
Rem 这个是可以先选择部分的表?
Rem    sht.Copy              '这里不写会怎么样?

    With ActiveWorkbook   '这里不能用thisworkbook了,因为被关闭了?
         .SaveCopyAs strpath & sht.Name & ".xlsm"  ', FileFormat:=xlOpenXMLWorkbook
         .Close
    End With
Next


End Sub
 

 

 

方法2

完整的测试过程

 

Sub saveas()   '这个是不是就是做打表工具的一部分?比如这就是导表


Dim wb As Workbook
Dim sht As Worksheet
Dim strpath As String

strpath = ThisWorkbook.path & "\"





Rem For Each sht In ActiveWindow.SelectedSheets   '这个先选中部分表
Rem For Each sht In ThisWorkbook.SelectedSheets   '这个先选中部分表 thisworkbook没这个方法。。。
Rem For Each sht In ThisWorkbook.worksheets.Select  '?也不行,没指定选中了哪个
Rem select 方法默认是替代性的,只同时选中1个。 但可以设置为选多个
Rem active肯定只有1个?
Rem For Each sht In ThisWorkbook.Worksheets("selected").select表  '下标越界,没法这么表示选中的表


For Each sht In ActiveWindow.SelectedSheets


    sht.Copy  '如果不加,源和目标文件类型对不上,则会提示宏无法保存在xlsx内。点确定也会完全复制一份新的?而不是分开复制?
    With ActiveWorkbook   '这里不能用thisworkbook了,因为新表创建后就激活了需要这时候重命名
         .saveas strpath & sht.Name & ".xlsx" ', FileFormat:=xlOpenXMLWorkbook  '如果不加fileformat ?
         .Close
    End With
Next

End Sub

 

所以  

saveas      会把原表另存为  理论上前面可以先copy

savecopyas

fileformat:=xlopenxmlworkbook 想当于保存为什么类型的文件。官方msdn有介绍

 

 

把表里的多个sheet都保存为workbook

 

 

 

 

Sub saveas()   '这个是不是就是做打表工具的一部分?比如这就是导表

 

 

Dim wb As Workbook

Dim sht As Worksheet

Dim strpath As String

 

 

 

strpath = ThisWorkbook.path & "\"            '这样能自动读路径,好技巧

For Each sht In ThisWorkbook.Worksheets

Rem For Each wsh In ActiveWindow.SelectedSheets

Rem 这个是可以先选择部分的表?

Rem    sht.Copy              '这里是说要拷贝sheet内容,存为新的sheet,有其他办法吗

 

    With ActiveWorkbook   '这里不能用thisworkbook了,因为被关闭了?

         .SaveCopyAs strpath & sht.Name & ".xlsm"  ', FileFormat:=xlOpenXMLWorkbook

         .Close

    End With

Next

 

 

End Sub

 

 

尝试用其他的方法

但是

只有workbook 对象(因为是文件级的,文件才需要保存)才有  save  saveas  savecopyas

而其他对象比如   worksheet 只有save

 

 

如果前面不用

Sheet.copy  再保存内容   sheet.copy了就变成了workbook了?

Sheet.copy 应该是在一个新的workbook里copy出了一个新的sheet,利用了这一个特性。

 

后面得想办法,直接把sheet 另外为文件。

是不是excel就不能单存某张表?

 

只有 workbook才可以另存为。

 

还一种方法

就是每次新建一个表 workbook.add

然后把 sheet的内容,copy过去,应该也一样

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值