功能描述
实现excel单个工作表的批量转存,单个工作表由于不是文件级别的对象,因此不能直接使用saveas方法,而是利用了sh.copy,在使用.copy方法时相当于重新生成了一个workbook,再通过saveas另存为,实际上这段代码也可以实现另存为其他格式,只需修改 fileformat的值就可以了,下图是一段参考数值,完整版参考msdn
代码实现
Sub saveAsCsv()
Dim i As Integer
Dim sh As Worksheet
Dim shpath As String
shpath = ThisWorkbook.Path & "\" '读取当前路径
Application.DisplayAlerts = False ‘关闭excel出现的警告对话框
For Each sh In Worksheets
If sh.Name <> sheet1.Name Then ‘遍历除第一张外的数据表
'sh.SaveAs shpath & sh.Name & ".csv" ‘直接这样写,只是重新保存了一份workbook,相当于只是进行了重命名的操作,worksheet不是文件级别的数据因此没有saveas方法
sh.Copy 'worksheet.copy这个方法实际上的过程是新建一个workbook,将worksheet内容复制到新的workbook。
With ActiveWorkbook '这里不能用thisworkbook,因为新表创建后就激活了需要这时候重命名
.SaveAs shpath & sh.Name & ".csv", FileFormat:=xlCSV ‘fileformat 指定保存文件格式,如果不加虽然后缀是csv但实际还是表格的文件形式,文本无法打开。
.Close
End With
End If
Next
Application.DisplayAlerts = ture
End Sub