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