Excel VBA-批量將多個sheet表另存為單獨的工作薄檔案
阿新 • • 發佈:2019-02-02
將excel多個工作表另存為單獨的工作薄
工作中為了方便,我們常常將多個數據類似的表放在同一個工作薄,但是如果要對每個檔案執行相同的轉換或處理,需要用R或Python讀取每張表的資料,這時就要將其拆分為一個個單獨的檔案。
當sheet表很多時,手動複製貼上既費時又容易出錯,最近發現VBA的幾行程式碼就可以快速實現。下面介紹如何另存為xls檔案和csv檔案兩種格式。
另存為xls檔案的具體步驟
按Alt+F11,開啟VBA編輯器,在程式碼視窗中貼上下列程式碼
Sub SaveSheetAsWorkbook()
Dim theName As String
On Error GoTo Line1
For Each sht In ActiveWindow.SelectedSheets
sht.Copy
theName = ThisWorkbook.Path & "_" & sht.Name & ".xls"
ActiveWorkbook.SaveAs Filename:=theName, FileFormat:=xlNormal
ActiveWindow.Close
Next
Line1:
End Sub
關閉VBA編輯器,返回Excel介面,選擇需要單獨儲存為工作簿的工作表,如果要選擇多個工作表,可按Ctrl鍵或Shift鍵進行選擇,然後按Alt+F8開啟“巨集”對話方塊,選擇“SaveSheetAsWorkbook”巨集執行即可。
上述程式碼將每個所選的工作表單獨儲存為一個工作簿,存放位置與原工作簿相同,名稱為“原工作簿名稱_工作表名稱.xls”。如果是在新建且未儲存的工作簿中執行程式碼,Excel會將新生成的工作簿儲存到預設的檔案位置,如“我的文件”。
另存為csv檔案的VBA程式碼
只需將檔名稱theName和檔案型別FileFormat修改為CSV即可:
Sub SaveSheetAsCSV()
Dim theName As String
On Error GoTo Line1
For Each sht In ActiveWindow.SelectedSheets
sht.Copy
theName = ThisWorkbook.Path & "_" & sht.Name & ".csv"
ActiveWorkbook.SaveAs Filename:=theName,
FileFormat:=xlCSV
ActiveWindow.Close
Next
Line1:
End Sub