VBA实现excel单个工作表批量转存cvs

功能描述

实现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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章