功能描述
實現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